Module: Slither

Defined in:
lib/slither.rb,
lib/slither/column.rb,
lib/slither/parser.rb,
lib/slither/section.rb,
lib/slither/version.rb,
lib/slither/generator.rb,
lib/slither/definition.rb

Defined Under Namespace

Classes: Column, ColumnMismatchError, Definition, DuplicateColumnNameError, Error, FormattedStringExceedsLengthError, Generator, LineWrongSizeError, Parser, ParserError, RequiredSectionEmptyError, RequiredSectionNotFoundError, Section, SectionsNotSameLengthError

Constant Summary collapse

VERSION =
"0.99.6"

Class Method Summary collapse

Class Method Details

.define(name, options = {}) {|definition| ... } ⇒ Object

Define a Slither’s definition to parse a file.

name - String name of the definition, this should be unique. options - Hash of options to pass to the definition.

Ex: by_bytes: true, to parse by bytes
Ex: align: :left, to align the columns to the left

block - Block to define the sections of the definition. See README.md for more info.

Yields:

  • (definition)


27
28
29
30
31
32
# File 'lib/slither.rb', line 27

def self.define(name, options = {}, &block)
  definition = Definition.new(options)
  yield(definition)
  definitions[name] = definition
  definition
end

.generate(definition_name, data) ⇒ Object

Generate a File from Data.

Raises:

  • (ArgumentError)


35
36
37
38
39
40
41
# File 'lib/slither.rb', line 35

def self.generate(definition_name, data)
  definition = definition(definition_name)
  raise ArgumentError, "Definition name '#{name}' was not found." unless definition

  generator = Generator.new(definition)
  generator.generate(data)
end

.parse(filename, definition_name) ⇒ Object

Raises:

  • (ArgumentError)


50
51
52
53
54
55
# File 'lib/slither.rb', line 50

def self.parse(filename, definition_name)
  raise ArgumentError, "File #{filename} does not exist." unless File.exist?(filename)

  file_io = File.open(filename, 'r')
  parseIo(file_io, definition_name)
end

.parseIo(io, definition_name) ⇒ Object

Raises:

  • (ArgumentError)


57
58
59
60
61
62
63
# File 'lib/slither.rb', line 57

def self.parseIo(io, definition_name)
  definition = definition(definition_name)
  raise ArgumentError, "Definition name '#{definition_name}' was not found." unless definition

  parser = Parser.new(definition, io)
  definition.options[:by_bytes] ? parser.parse_by_bytes : parser.parse
end

.write(filename, definition_name, data) ⇒ Object

Writes the File



44
45
46
47
48
# File 'lib/slither.rb', line 44

def self.write(filename, definition_name, data)
  File.open(filename, "w") do |f|
    f.write generate(definition_name, data)
  end
end