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/import_pipeline.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, ImportPipeline, LexError, Lexer, ParseError, Parser, ResolutionError, Resolver, Serializer, SourceLocation, Token
Class Method Summary
collapse
Class Method Details
.default_resolver ⇒ Object
26
27
28
|
# File 'lib/opencdd/cddal.rb', line 26
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.
39
40
41
42
43
44
45
46
47
|
# File 'lib/opencdd/cddal.rb', line 39
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
49
50
51
52
53
|
# File 'lib/opencdd/cddal.rb', line 49
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
55
56
57
|
# File 'lib/opencdd/cddal.rb', line 55
def serialize(database)
Serializer.new(database).to_cddal
end
|
.serialize_to_file(database, path) ⇒ Object
59
60
61
62
|
# File 'lib/opencdd/cddal.rb', line 59
def serialize_to_file(database, path)
File.write(path, serialize(database))
self
end
|