From 32dba554d7c6ef31c9efd383af589f2fbd1beeba Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Tue, 18 Aug 2015 15:11:06 +0200 Subject: [PATCH] Ruby generator support for Ranges --- lib/oga/ruby/generator.rb | 15 +++++++++++++++ spec/oga/ruby/generator_spec.rb | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/lib/oga/ruby/generator.rb b/lib/oga/ruby/generator.rb index c15aae6..f4b044f 100644 --- a/lib/oga/ruby/generator.rb +++ b/lib/oga/ruby/generator.rb @@ -208,6 +208,21 @@ end EOF end + ## + # Processes a Range node. + # + # @param [Oga::Ruby::Node] ast + # @return [String] + # + def on_range(ast) + start, stop = *ast + + start_str = process(start) + stop_str = process(stop) + + "(#{start_str}..#{stop_str})" + end + ## # Processes a string node. # diff --git a/spec/oga/ruby/generator_spec.rb b/spec/oga/ruby/generator_spec.rb index 7d531c7..328ad36 100644 --- a/spec/oga/ruby/generator_spec.rb +++ b/spec/oga/ruby/generator_spec.rb @@ -185,6 +185,16 @@ end end end + describe '#on_range' do + it 'returns a String' do + start = Oga::Ruby::Node.new(:lit, %w{10}) + stop = Oga::Ruby::Node.new(:lit, %w{20}) + node = Oga::Ruby::Node.new(:range, [start, stop]) + + @generator.on_range(node).should == '(10..20)' + end + end + describe '#on_string' do it 'returns a String' do node = Oga::Ruby::Node.new(:string, %w{foo})