Module: Vernacular
- Defined in:
- lib/vernacular.rb,
lib/vernacular/version.rb,
lib/vernacular/source_file.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
Overview
Allows extending ruby’s syntax and compilation process
Defined Under Namespace
Modules: BootsnapMixin, InstructionSequenceMixin, Modifiers Classes: ConfigurationHash, RegexModifier, SourceFile
Constant Summary collapse
- VERSION =
'1.0.0'
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.
40 41 42 |
# File 'lib/vernacular.rb', line 40 def iseq_dir @iseq_dir end |
.modifiers ⇒ Object (readonly)
Returns the value of attribute modifiers.
40 41 42 |
# File 'lib/vernacular.rb', line 40 def modifiers @modifiers end |
Class Method Details
.add(modifier) ⇒ Object
42 43 44 |
# File 'lib/vernacular.rb', line 42 def add(modifier) modifiers << modifier end |
.clear ⇒ Object
46 47 48 |
# File 'lib/vernacular.rb', line 46 def clear Dir.glob(File.join(iseq_dir, '**/*.yarb')) { |path| File.delete(path) } end |
.configure {|_self| ... } ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/vernacular.rb', line 50 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
62 63 64 65 |
# File 'lib/vernacular.rb', line 62 def give_me_all_the_things! @modifiers = Modifiers.constants.map { |constant| Modifiers.const_get(constant).new } end |
.iseq_path_for(source_path) ⇒ Object
74 75 76 77 |
# File 'lib/vernacular.rb', line 74 def iseq_path_for(source_path) source_path.gsub(/[^A-Za-z0-9\._-]/) { |c| format('%02x', c.ord) } .gsub('.rb', '.yarb') end |
.modify(source) ⇒ Object
67 68 69 70 71 72 |
# File 'lib/vernacular.rb', line 67 def modify(source) modifiers.each do |modifier| source = modifier.modify(source) end source end |