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

.loggerObject



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

Returns:

  • (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