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.7"

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)


39
40
41
42
43
44
# File 'lib/slither.rb', line 39

def self.define(name, options = {}, &block) # rubocop:disable Lint/UnusedMethodArgument
  definition = Definition.new(options)
  yield(definition)
  definitions[name] = definition
  definition
end

.generate(definition_name, data) ⇒ Object

Generate a File from Data.

Raises:

  • (ArgumentError)


47
48
49
50
51
52
53
# File 'lib/slither.rb', line 47

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)


60
61
62
63
64
65
# File 'lib/slither.rb', line 60

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

rubocop:disable Naming/MethodName

Raises:

  • (ArgumentError)


67
68
69
70
71
72
73
# File 'lib/slither.rb', line 67

def self.parseIo(io, definition_name) # rubocop:disable Naming/MethodName
  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



56
57
58
# File 'lib/slither.rb', line 56

def self.write(filename, definition_name, data)
  File.write(filename, generate(definition_name, data))
end