Module: Opencdd::Cddal
- Defined in:
- lib/opencdd/cddal.rb,
lib/opencdd/cddal/ast.rb,
lib/opencdd/cddal/lexer.rb,
lib/opencdd/cddal/parser.rb,
lib/opencdd/cddal/builder.rb,
lib/opencdd/cddal/fetcher.rb,
lib/opencdd/cddal/resolver.rb,
lib/opencdd/cddal/serializer.rb,
lib/opencdd/cddal/fetcher/net_http.rb,
lib/opencdd/cddal/generated_parser.rb,
lib/opencdd/cddal/value_serializer.rb,
lib/opencdd/cddal/fetcher/in_memory.rb
Defined Under Namespace
Modules: AST, Fetcher, ValueSerializer
Classes: Builder, Error, GeneratedParser, ImportError, LexError, Lexer, ParseError, Parser, ResolutionError, Resolver, Serializer, SourceLocation, Token
Class Method Summary
collapse
Class Method Details
.default_resolver ⇒ Object
25
26
27
|
# File 'lib/opencdd/cddal.rb', line 25
def default_resolver
@default_resolver ||= Resolver.new
end
|
.parse(source, database: nil, resolver: nil, fetcher: nil, source_file: nil) ⇒ Object
Parse source (a CDDAL string) into a Opencdd::Database.
Options:
database: - existing Database to merge into (default: new)
resolver: - Opencdd::Cddal::Resolver for module imports
(default: a fresh Resolver with default fetcher)
fetcher: - shortcut; if supplied, wraps in a new Resolver
source_file: - path/URL the source came from. Used for
diagnostics and for resolving relative imports.
38
39
40
41
42
43
44
45
46
|
# File 'lib/opencdd/cddal.rb', line 38
def parse(source, database: nil, resolver: nil, fetcher: nil,
source_file: nil)
tokens = Lexer.new(source.to_s).tokens
declarations = Parser.new(tokens).parse
effective_resolver =
resolver || (fetcher ? Resolver.new(fetcher: fetcher) : default_resolver)
Builder.new(database, resolver: effective_resolver, source_file: source_file)
.build(declarations)
end
|
.parse_file(path, database: nil, resolver: nil, fetcher: nil) ⇒ Object
48
49
50
51
52
|
# File 'lib/opencdd/cddal.rb', line 48
def parse_file(path, database: nil, resolver: nil, fetcher: nil)
source = File.read(path)
parse(source, database: database,
resolver: resolver, fetcher: fetcher, source_file: path)
end
|
.serialize(database) ⇒ Object
54
55
56
|
# File 'lib/opencdd/cddal.rb', line 54
def serialize(database)
Serializer.new(database).to_cddal
end
|
.serialize_to_file(database, path) ⇒ Object
58
59
60
61
|
# File 'lib/opencdd/cddal.rb', line 58
def serialize_to_file(database, path)
File.write(path, serialize(database))
self
end
|