rodf 1.0.0 → 1.1.0

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/lib/rodf/column.rb CHANGED
@@ -1,19 +1,6 @@
1
1
  # Copyright (c) 2008 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
5
  require 'builder'
19
6
 
@@ -29,4 +16,3 @@ module RODF
29
16
  end
30
17
  end
31
18
  end
32
-
@@ -1,19 +1,7 @@
1
1
  # Copyright (c) 2010-2012 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
4
 
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
5
  require 'builder'
18
6
 
19
7
  if !String.method_defined? :to_xs
@@ -1,54 +1,72 @@
1
1
  # Copyright (c) 2008 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
- require 'active_support/inflector'
5
+ require 'dry/inflector'
19
6
 
20
7
  module RODF
21
8
  class Container
9
+ INFLECTOR = Dry::Inflector.new.freeze
10
+
22
11
  def self.contains(*stuffs_array)
23
12
  stuffs_array.map {|sym| sym.to_s}.each do |stuffs|
24
- stuff = stuffs.to_s.singularize
25
- stuff_class = eval(stuff.camelize)
26
-
27
- self.class_eval "
28
- def #{stuffs}
29
- @#{stuffs} ||= []
30
- end"
31
-
32
- self.class_eval "
33
- def #{stuff}(*args, &contents)
34
- c = #{stuff_class}.new(*args)
35
- c.instance_eval(&contents) if block_given?
36
- #{stuffs} << c
13
+ stuff = INFLECTOR.singularize(stuffs.to_s)
14
+ stuff_class = RODF.const_get(INFLECTOR.camelize(stuff))
15
+
16
+ module_for_stuff.instance_exec do
17
+ define_method stuffs do
18
+ instance_variable_name = :"@#{stuffs}"
19
+
20
+ if instance_variable_defined?(instance_variable_name)
21
+ return instance_variable_get(instance_variable_name)
22
+ end
23
+
24
+ instance_variable_set(instance_variable_name, [])
25
+ end
26
+
27
+ define_method stuff do |*args, &contents|
28
+ c = stuff_class.new(*args, &contents)
29
+ public_send(stuffs) << c
37
30
  c
38
- end"
31
+ end
32
+
33
+ define_method "add_#{stuffs}" do |*elements|
34
+ elements = elements.first if elements.first.is_a?(Array)
35
+ elements.each do |element|
36
+ public_send(stuff, element)
37
+ end
38
+ end
39
39
 
40
- self.class_eval "
41
- def #{stuffs}_xml
42
- #{stuffs}.map {|c| c.xml}.join
43
- end"
40
+ define_method "#{stuffs}_xml" do
41
+ public_send(stuffs).map(&:xml).join
42
+ end
43
+ end
44
44
  end
45
45
  end
46
46
 
47
+ def self.module_for_stuff
48
+ if const_defined?(:StuffMethods, false)
49
+ mod = const_get(:StuffMethods)
50
+ else
51
+ mod = const_set(:StuffMethods, Module.new)
52
+ include mod
53
+ end
54
+ mod
55
+ end
56
+
47
57
  def self.create(*args, &contents)
48
- container = self.new(*args)
49
- container.instance_eval(&contents) if block_given?
58
+ container = new(*args, &contents)
50
59
  container.xml
51
60
  end
61
+
62
+ def initialize(*_args, &contents)
63
+ return unless contents
64
+
65
+ if contents.arity.zero?
66
+ instance_exec(self, &contents)
67
+ else
68
+ yield(self)
69
+ end
70
+ end
52
71
  end
53
72
  end
54
-
@@ -1,24 +1,11 @@
1
1
  # Copyright (c) 2010 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
5
  require 'builder'
19
6
 
20
- require 'rodf/container'
21
- require 'rodf/style_section'
7
+ require_relative 'container'
8
+ require_relative 'style_section'
22
9
 
23
10
  module RODF
24
11
  class DataStyle < Container
@@ -27,6 +14,8 @@ module RODF
27
14
  alias section style_section
28
15
 
29
16
  def initialize(name, type)
17
+ super
18
+
30
19
  @type, @name = type, name
31
20
  end
32
21
 
data/lib/rodf/document.rb CHANGED
@@ -1,32 +1,24 @@
1
1
  # Copyright (c) 2010 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
5
  require 'zip'
19
6
 
20
- require 'rodf/container'
21
- require 'rodf/skeleton'
22
- require 'rodf/style'
7
+ require_relative 'container'
8
+ require_relative 'skeleton'
9
+ require_relative 'style'
23
10
 
24
11
  module RODF
25
12
  class Document < Container
26
13
  contains :styles, :default_styles, :office_styles
27
14
 
28
15
  def self.file(ods_file_name, &contents)
29
- (doc = new).instance_eval(&contents)
16
+ doc = new
17
+ if contents.arity.zero?
18
+ contents.call(doc)
19
+ else
20
+ doc.instance_exec(doc, &contents)
21
+ end
30
22
  doc.write_to ods_file_name
31
23
  end
32
24
 
@@ -62,4 +54,3 @@ module RODF
62
54
  end
63
55
  end
64
56
  end
65
-
@@ -1,27 +1,16 @@
1
1
  # Copyright (c) 2010 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
5
  require 'builder'
19
6
 
20
- require 'rodf/paragraph_container'
7
+ require_relative 'paragraph_container'
21
8
 
22
9
  module RODF
23
10
  class Hyperlink < ParagraphContainer
24
11
  def initialize(first, second = {})
12
+ super
13
+
25
14
  if second.instance_of?(Hash) && second.empty?
26
15
  @href = first
27
16
  else
@@ -47,4 +36,3 @@ module RODF
47
36
  alias a link
48
37
  end
49
38
  end
50
-
@@ -1,19 +1,6 @@
1
1
  # Copyright (c) 2010 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
5
  require 'builder'
19
6
 
@@ -29,4 +16,3 @@ module RODF
29
16
  end
30
17
  end
31
18
  end
32
-
@@ -1,30 +1,19 @@
1
1
  # Copyright (c) 2010 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
5
  require 'builder'
19
6
 
20
- require 'rodf/container'
21
- require 'rodf/property'
7
+ require_relative 'container'
8
+ require_relative 'property'
22
9
 
23
10
  module RODF
24
11
  class PageLayout < Container
25
12
  contains :properties
26
13
 
27
14
  def initialize(name)
15
+ super
16
+
28
17
  @name = name
29
18
  end
30
19
 
@@ -35,4 +24,3 @@ module RODF
35
24
  end
36
25
  end
37
26
  end
38
-
@@ -1,27 +1,16 @@
1
1
  # Copyright (c) 2010 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
5
  require 'builder'
19
6
 
20
- require 'rodf/paragraph_container'
7
+ require_relative 'paragraph_container'
21
8
 
22
9
  module RODF
23
10
  class Paragraph < ParagraphContainer
24
11
  def initialize(fst = nil, snd = {})
12
+ super
13
+
25
14
  first_is_hash = fst.instance_of? Hash
26
15
  span(fst) unless first_is_hash
27
16
  @elem_attrs = make_element_attributes(first_is_hash ? fst : snd)
@@ -1,23 +1,10 @@
1
1
  # Copyright (c) 2010 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
5
  require 'builder'
19
6
 
20
- require 'rodf/container'
7
+ require_relative 'container'
21
8
 
22
9
  module RODF
23
10
  # Container for all kinds of paragraph content
@@ -31,4 +18,3 @@ module RODF
31
18
  end
32
19
  end
33
20
  end
34
-
data/lib/rodf/property.rb CHANGED
@@ -1,19 +1,6 @@
1
1
  # Copyright (c) 2008 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
5
  require 'builder'
19
6
 
@@ -127,4 +114,3 @@ module RODF
127
114
  end
128
115
  end
129
116
  end
130
-
data/lib/rodf/row.rb CHANGED
@@ -1,24 +1,11 @@
1
1
  # Copyright (c) 2008 Thiago Arrais
2
2
  #
3
3
  # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
4
 
18
5
  require 'builder'
19
6
 
20
- require 'rodf/container'
21
- require 'rodf/cell'
7
+ require_relative 'container'
8
+ require_relative 'cell'
22
9
 
23
10
  module RODF
24
11
  class Row < Container
@@ -29,6 +16,8 @@ module RODF
29
16
  def initialize(number=0, opts={})
30
17
  @number = number
31
18
  @style = opts[:style]
19
+
20
+ super
32
21
  end
33
22
 
34
23
  def xml
@@ -40,4 +29,3 @@ module RODF
40
29
  end
41
30
  end
42
31
  end
43
-