Module: Vernacular
- Defined in:
- lib/vernacular.rb,
lib/vernacular/version.rb,
lib/vernacular/ast_parser.rb,
lib/vernacular/source_file.rb,
lib/vernacular/ast_modifier.rb,
lib/vernacular/regex_modifier.rb,
lib/vernacular/configuration_hash.rb,
lib/vernacular/modifiers/uri_sigil.rb,
lib/vernacular/modifiers/date_sigil.rb,
lib/vernacular/modifiers/number_sigil.rb,
lib/vernacular/modifiers/typed_method_args.rb,
lib/vernacular/modifiers/typed_method_returns.rb
Overview
Allows extending ruby’s syntax and compilation process
Defined Under Namespace
Modules: BootsnapMixin, InstructionSequenceMixin, Modifiers Classes: ASTModifier, ASTParser, ConfigurationHash, RegexModifier, SourceFile
Constant Summary collapse
- PARSER_PATH =
File.('vernacular/parser.rb', __dir__).freeze
- VERSION =
'0.1.0'.freeze
Class Attribute Summary collapse
-
.iseq_dir ⇒ Object
readonly
Returns the value of attribute iseq_dir.
-
.modifiers ⇒ Object
readonly
Returns the value of attribute modifiers.
Class Method Summary collapse
- .add(modifier) ⇒ Object
- .clear ⇒ Object
- .configure {|_self| ... } ⇒ Object
-
.give_me_all_the_things! ⇒ Object
Use every available pre-configured modifier.
- .iseq_path_for(source_path) ⇒ Object
- .modify(source) ⇒ Object
Class Attribute Details
.iseq_dir ⇒ Object (readonly)
Returns the value of attribute iseq_dir.
46 47 48 |
# File 'lib/vernacular.rb', line 46 def iseq_dir @iseq_dir end |
.modifiers ⇒ Object (readonly)
Returns the value of attribute modifiers.
46 47 48 |
# File 'lib/vernacular.rb', line 46 def modifiers @modifiers end |
Class Method Details
.add(modifier) ⇒ Object
48 49 50 |
# File 'lib/vernacular.rb', line 48 def add(modifier) modifiers << modifier end |
.clear ⇒ Object
52 53 54 |
# File 'lib/vernacular.rb', line 52 def clear Dir.glob(File.join(iseq_dir, '**/*.yarb')) { |path| File.delete(path) } end |
.configure {|_self| ... } ⇒ Object
56 57 58 59 60 61 62 63 64 65 |
# File 'lib/vernacular.rb', line 56 def configure @modifiers = [] yield self hash = ConfigurationHash.new(modifiers).hash @iseq_dir = File.(File.join('../.iseq', hash), __dir__) FileUtils.mkdir_p(iseq_dir) unless File.directory?(iseq_dir) install end |
.give_me_all_the_things! ⇒ Object
Use every available pre-configured modifier
68 69 70 71 |
# File 'lib/vernacular.rb', line 68 def give_me_all_the_things! @modifiers = Modifiers.constants.map { |constant| Modifiers.const_get(constant).new } end |
.iseq_path_for(source_path) ⇒ Object
80 81 82 83 |
# File 'lib/vernacular.rb', line 80 def iseq_path_for(source_path) source_path.gsub(/[^A-Za-z0-9\._-]/) { |c| '%02x' % c.ord } .gsub('.rb', '.yarb') end |
.modify(source) ⇒ Object
73 74 75 76 77 78 |
# File 'lib/vernacular.rb', line 73 def modify(source) modifiers.each do |modifier| source = modifier.modify(source) end source end |