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: 135,981 of 180,507
Downloads: 3,828

Daily

Ranking: 147,217 of 180,487
Downloads: 1

Depended by

RankDownloadsName

Depends on

RankDownloadsName
83348,060,549rb-fsevent
37286,531,730polyglot
37885,525,877redcarpet
38883,133,225guard-rspec
40081,802,198treetop
71552,342,960fuubar
1,04529,836,203github-markup
3,9531,736,717version
6,826477,756guard-yard

Owners

#GravatarHandle
1iconRyanScottLewis