Module: AsciiPress
- Defined in:
- lib/ascii_press.rb,
lib/ascii_press/version.rb
Defined Under Namespace
Classes: Renderer, WordPressSyncer
Constant Summary
collapse
- DEFAULT_SLUG_RULES =
{
'Cannot start with `-` or `_`' => -> (slug) { !%w(- _).include?(slug[0]) },
'Cannot end with `-` or `_`' => -> (slug) { !%w(- _).include?(slug[-1]) },
'Cannot have multiple `-` in a row' => -> (slug) { !slug.match(/--/) },
'Must only contain letters, numbers, hyphens, and underscores' => -> (slug) { !!slug.match(/^[a-z0-9\-\_]+$/) },
}
- VERSION =
"0.2.0"
Class Method Summary
collapse
Class Method Details
.logger ⇒ Object
16
17
18
|
# File 'lib/ascii_press.rb', line 16
def self.logger
@logger || Logger.new(STDOUT)
end
|
.logger=(new_logger) ⇒ Object
12
13
14
|
# File 'lib/ascii_press.rb', line 12
def self.logger=(new_logger)
@logger = new_logger
end
|
.slug_valid?(slug, rules = DEFAULT_SLUG_RULES) ⇒ Boolean
217
218
219
|
# File 'lib/ascii_press.rb', line 217
def self.slug_valid?(slug, rules = DEFAULT_SLUG_RULES)
rules.values.all? {|rule| rule.call(slug) }
end
|
.verify_adoc_slugs!(adoc_paths, rules = DEFAULT_SLUG_RULES) ⇒ Object
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
|
# File 'lib/ascii_press.rb', line 227
def self.verify_adoc_slugs!(adoc_paths, rules = DEFAULT_SLUG_RULES)
data = adoc_paths.map do |path|
doc = Asciidoctor.load(File.read(path))
slug = doc.attributes['slug']
if !slug_valid?(slug, rules)
violations = violated_slug_rules(slug, rules)
[path, slug, violations]
end
end.compact
if data.size > 0
require 'colorize'
data.each do |path, slug, violations|
puts 'WARNING!!'.red
puts "The document #{path.blue} has the #{slug.blue} which in invalid because:"
violations.each do |violation|
puts " - #{violation.yellow}"
end
end
raise 'Invalid slugs. Cannot continue'
end
end
|
.violated_slug_rules(slug, rules = DEFAULT_SLUG_RULES) ⇒ Object
221
222
223
224
225
|
# File 'lib/ascii_press.rb', line 221
def self.violated_slug_rules(slug, rules = DEFAULT_SLUG_RULES)
rules.reject do |desc, rule|
rule.call(slug)
end.map(&:first)
end
|