Categories: None [Edit]

trope

https://rubygems.org/gems/trope
https://github.com/RyanScottLewis/trope
# Trope **[Documentation][docs] - [Gem][gems] - [Source][source]** Prototyping language that transcompiles into pure Ruby code. 1. Build your concept in Trope. 2. Write specs. 3. Transcompile into Ruby. 4. Destroy Trope files. 5. Red, green, refactor. ## Install > NOTE: Trope is not released yet, the gem is just a placeholder. ### Bundler: `gem 'trope'` ### RubyGems: `gem install trope` ## Example Create `library.trope`: ```ruby object Book attr name -!wd 'Unnamed book' attr isbn -w attr library -w do before write { @library.books.delete(self) unless @library.nil? } after write { @library.books.push(self) unless @library.books.include?(self) } end end object Library attr books -d Array.new meth add_book do |attributes_or_book | book = attributes_or_book.is_a?(Book) ? attributes_or_book : Book.new(attributes_or_book) book.library = self @books << book end end ``` Now generate the Ruby code: ```sh $ trope compile libary.trope ``` Those 15 lines will be transcompiled into the following pure Ruby code in `library.rb`: ```ruby class Book class Error < RuntimeError; end class InvalidAttributesError < Error def to_s 'attributes must be a Hash or respond to #to_h' end end class MissingAttributeError < Error def initialize(attr_name, attr_class) @name, @class = attr_name.to_s, attr_class.to_s end def to_s "attribute '#@name' does not exist for #@class" end end class MissingNameError < Error def to_s 'name cannot be nil' end end class InvalidNameError < Error def to_s 'name must be an instance of String or respond to :to_s' end end class InvalidIsbnError < Error def to_s 'isbn must be an instance of Integer or respond to :to_i' end end class MissingLibraryError < Error def to_s 'library cannot be nil' end end class InvalidLibraryError < Error def to_s 'library ...

Total

Ranking: 137,417 of 183,107
Downloads: 3,936

Daily

Ranking: 86,038 of 183,092
Downloads: 0

Depended by

RankDownloadsName

Depends on

RankDownloadsName
88381,901,392rb-fsevent
38993,982,532guard-rspec
39293,021,715redcarpet
40489,757,104polyglot
42484,476,302treetop
70860,245,256fuubar
1,13530,057,223github-markup
4,0531,872,302version
7,013503,083guard-yard

Owners

#GravatarHandle
1iconRyanScottLewis