to_source 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Changelog.md CHANGED
@@ -1,3 +1,10 @@
1
+ # v0.2.4 2012-12-07
2
+
3
+ * [feature] Allow to emit pattern variables as root node
4
+ * [fixed] Emit send with splat and block argument correctly
5
+
6
+ [Compare v0.2.3..v0.2.4](https://github.com/mbj/to_source/compare/v0.2.3...v0.2.4)
7
+
1
8
  # v0.2.3 2012-12-07
2
9
 
3
10
  * [fixed] Nuke dangling require (sorry for not running specs after gemspec change)
@@ -1047,7 +1047,7 @@ module ToSource
1047
1047
  end
1048
1048
  end
1049
1049
 
1050
- # Emit send literal
1050
+ # Emit send node
1051
1051
  #
1052
1052
  # @param [Rubinius::AST::Node] node
1053
1053
  #
@@ -1100,13 +1100,16 @@ module ToSource
1100
1100
  array_body(array)
1101
1101
  is_block_pass = block.kind_of?(Rubinius::AST::BlockPass)
1102
1102
 
1103
+ empty = array.empty?
1104
+
1103
1105
  if arguments.splat
1104
- emit(', ') unless array.empty?
1106
+ emit(', ') unless empty
1105
1107
  dispatch(arguments.splat)
1108
+ empty = false
1106
1109
  end
1107
1110
 
1108
1111
  if is_block_pass
1109
- emit(', ') unless array.empty?
1112
+ emit(', ') unless empty
1110
1113
  block_pass(block)
1111
1114
  end
1112
1115
 
@@ -1157,6 +1160,7 @@ module ToSource
1157
1160
  if node.name == :[]
1158
1161
  return element_reference(node)
1159
1162
  end
1163
+
1160
1164
  return if process_binary_operator(node)
1161
1165
 
1162
1166
  if receiver(node)
@@ -1549,6 +1553,18 @@ module ToSource
1549
1553
  kend
1550
1554
  end
1551
1555
 
1556
+ # Emit pattern variable
1557
+ #
1558
+ # @param [Rubinius::AST::PatternVariable] node
1559
+ #
1560
+ # @return [undefined]
1561
+ #
1562
+ # @api private
1563
+ #
1564
+ def pattern_variable(node)
1565
+ emit(node.name)
1566
+ end
1567
+
1552
1568
  # Emit pattern arguments
1553
1569
  #
1554
1570
  # @param [Rubinius::AST::PatternArguments] node
@@ -1561,7 +1577,7 @@ module ToSource
1561
1577
  emit('(')
1562
1578
  arguments = node.arguments.body
1563
1579
  arguments.each_with_index do |argument, index|
1564
- emit(argument.name)
1580
+ dispatch(argument)
1565
1581
  emit(', ') unless index == arguments.size - 1
1566
1582
  end
1567
1583
  emit(')')
@@ -1748,6 +1764,7 @@ module ToSource
1748
1764
  emit('&')
1749
1765
  dispatch(node.body)
1750
1766
  end
1767
+ alias_method :block_pass19, :block_pass
1751
1768
 
1752
1769
  # Emit return statement
1753
1770
  #
@@ -438,17 +438,13 @@ describe ToSource::Visitor,'.run' do
438
438
 
439
439
  context 'with formal splat and block' do
440
440
  assert_source <<-RUBY
441
- foo.bar(foo, *args) do
442
- some_stuff
443
- end
441
+ foo(bar, *args)
444
442
  RUBY
445
443
  end
446
444
 
447
445
  context 'with splat and block argument' do
448
446
  assert_source <<-RUBY
449
- def foo.bar(*args, &block)
450
- some_stuff
451
- end
447
+ foo(*args, &block)
452
448
  RUBY
453
449
  end
454
450
 
@@ -1008,7 +1004,7 @@ describe ToSource::Visitor,'.run' do
1008
1004
 
1009
1005
  context 'with block argument' do
1010
1006
  assert_source <<-RUBY
1011
- def foor(&block)
1007
+ def foo(&block)
1012
1008
  bar
1013
1009
  end
1014
1010
  RUBY
@@ -1016,7 +1012,15 @@ describe ToSource::Visitor,'.run' do
1016
1012
 
1017
1013
  context 'with required and block arguments' do
1018
1014
  assert_source <<-RUBY
1019
- def foor(bar, &block)
1015
+ def foo(bar, &block)
1016
+ bar
1017
+ end
1018
+ RUBY
1019
+ end
1020
+
1021
+ context 'with spat and block arguments' do
1022
+ assert_source <<-RUBY
1023
+ def foo(*bar, &block)
1020
1024
  bar
1021
1025
  end
1022
1026
  RUBY
data/to_source.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'to_source'
4
- s.version = '0.2.3'
4
+ s.version = '0.2.4'
5
5
  s.authors = ['Josep M. Bach', 'Markus Schirp']
6
6
  s.email = ['josep.m.bach@gmail.com', 'mbj@seonic.net']
7
7
  s.homepage = 'http://github.com/txus/to_source'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: to_source
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: