rocx 0.5.6
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.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +48 -0
- data/LICENSE.txt +20 -0
- data/README.md +34 -0
- data/Rakefile +9 -0
- data/lib/rocx.rb +8 -0
- data/lib/rocx/elements.rb +10 -0
- data/lib/rocx/elements/base_container.rb +65 -0
- data/lib/rocx/elements/base_element.rb +91 -0
- data/lib/rocx/elements/break.rb +10 -0
- data/lib/rocx/elements/paragraph.rb +31 -0
- data/lib/rocx/elements/run.rb +12 -0
- data/lib/rocx/elements/symbol.rb +10 -0
- data/lib/rocx/elements/text.rb +21 -0
- data/lib/rocx/package.rb +33 -0
- data/lib/rocx/parts.rb +8 -0
- data/lib/rocx/parts/base_part.rb +29 -0
- data/lib/rocx/parts/content_types.rb +46 -0
- data/lib/rocx/parts/document.rb +51 -0
- data/lib/rocx/parts/global_rels.rb +24 -0
- data/lib/rocx/parts/rels.rb +48 -0
- data/lib/rocx/parts/settings.rb +21 -0
- data/lib/rocx/parts/styles.rb +49 -0
- data/lib/rocx/properties.rb +12 -0
- data/lib/rocx/properties/alignment.rb +27 -0
- data/lib/rocx/properties/auto_adjust_right_indent.rb +15 -0
- data/lib/rocx/properties/auto_space_de.rb +15 -0
- data/lib/rocx/properties/auto_space_dn.rb +15 -0
- data/lib/rocx/properties/base_property.rb +35 -0
- data/lib/rocx/properties/bidi.rb +6 -0
- data/lib/rocx/properties/bold.rb +11 -0
- data/lib/rocx/properties/boolean_property.rb +15 -0
- data/lib/rocx/properties/conditional_formatting.rb +62 -0
- data/lib/rocx/properties/contextual_spacing.rb +6 -0
- data/lib/rocx/properties/div_id.rb +23 -0
- data/lib/rocx/properties/indentation.rb +31 -0
- data/lib/rocx/properties/italics.rb +11 -0
- data/lib/rocx/properties/keep_lines.rb +6 -0
- data/lib/rocx/properties/keep_next.rb +6 -0
- data/lib/rocx/properties/kinsoku.rb +6 -0
- data/lib/rocx/properties/mirror_indent.rb +6 -0
- data/lib/rocx/properties/on_off_property.rb +15 -0
- data/lib/rocx/properties/outline_level.rb +23 -0
- data/lib/rocx/properties/overflow_punctuation.rb +15 -0
- data/lib/rocx/properties/page_break_before.rb +6 -0
- data/lib/rocx/properties/snap_to_grid.rb +6 -0
- data/lib/rocx/properties/supress_auto_hyphens.rb +6 -0
- data/lib/rocx/properties/supress_line_numbers.rb +6 -0
- data/lib/rocx/properties/supress_overlap.rb +6 -0
- data/lib/rocx/properties/toggle_property.rb +15 -0
- data/lib/rocx/properties/widow_control.rb +6 -0
- data/lib/rocx/properties/word_wrap.rb +6 -0
- data/lib/rocx/style.rb +38 -0
- data/lib/rocx/version.rb +3 -0
- data/rocx.gemspec +30 -0
- data/test/data/elements/break_element.xml +4 -0
- data/test/data/elements/break_with_attributes_element.xml +4 -0
- data/test/data/elements/paragraph_element.xml +8 -0
- data/test/data/elements/paragraph_with_runs_element.xml +14 -0
- data/test/data/elements/run_element.xml +8 -0
- data/test/data/elements/symbol_element.xml +4 -0
- data/test/data/elements/text_element.xml +4 -0
- data/test/data/parts/content_types_part.xml +1 -0
- data/test/data/parts/document_with_children_part.xml +1 -0
- data/test/data/parts/empty_document_part.xml +1 -0
- data/test/data/parts/global_rels_part.xml +1 -0
- data/test/data/parts/rels_part.xml +1 -0
- data/test/data/parts/settings_part.xml +1 -0
- data/test/data/parts/styles_part.xml +1 -0
- data/test/data/parts/styles_with_custom_style_part.xml +1 -0
- data/test/data/styles/character_styles.xml +15 -0
- data/test/data/styles/paragraph_styles.xml +11 -0
- data/test/elements/break_test.rb +54 -0
- data/test/elements/paragraph_test.rb +37 -0
- data/test/elements/run_test.rb +18 -0
- data/test/elements/symbol_test.rb +23 -0
- data/test/elements/text_test.rb +26 -0
- data/test/package_test.rb +48 -0
- data/test/parts/content_types_test.rb +37 -0
- data/test/parts/document_test.rb +31 -0
- data/test/parts/global_rels_test.rb +13 -0
- data/test/parts/rels_test.rb +48 -0
- data/test/parts/settings_test.rb +13 -0
- data/test/parts/styles_test.rb +29 -0
- data/test/properties/auto_adjust_right_indent_test.rb +50 -0
- data/test/properties/auto_space_de_test.rb +50 -0
- data/test/properties/auto_space_dn_test.rb +50 -0
- data/test/properties/bidi_test.rb +50 -0
- data/test/properties/bold_test.rb +50 -0
- data/test/properties/conditional_formatting_test.rb +46 -0
- data/test/properties/contextual_spacing_test.rb +50 -0
- data/test/properties/div_id_test.rb +38 -0
- data/test/properties/italics_test.rb +50 -0
- data/test/properties/keep_lines_test.rb +50 -0
- data/test/properties/keep_next_test.rb +50 -0
- data/test/properties/kinsoku_test.rb +50 -0
- data/test/properties/mirror_indent_test.rb +50 -0
- data/test/properties/outline_level_test.rb +46 -0
- data/test/properties/overflow_punctuation_test.rb +50 -0
- data/test/properties/page_break_before_test.rb +50 -0
- data/test/properties/snap_to_grid_test.rb +50 -0
- data/test/properties/supress_auto_hyphens_test.rb +50 -0
- data/test/properties/supress_line_numbers_test.rb +50 -0
- data/test/properties/supress_overlap_test.rb +50 -0
- data/test/properties/widow_control_test.rb +50 -0
- data/test/properties/word_wrap_test.rb +50 -0
- data/test/style_test.rb +54 -0
- data/test/test_helper.rb +55 -0
- metadata +315 -0
@@ -0,0 +1,46 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class OutlineLevelTest < PropertyTest
|
4
|
+
attr_reader :outline_level
|
5
|
+
|
6
|
+
context "always" do
|
7
|
+
setup do
|
8
|
+
@outline_level = Rocx::Properties::OutlineLevel.new(0)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have the right tag" do
|
12
|
+
assert_equal :outlineLvl, outline_level.tag
|
13
|
+
end
|
14
|
+
|
15
|
+
should "have the right name" do
|
16
|
+
assert_equal "outline_level", outline_level.name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "with non-integer values, it" do
|
21
|
+
should "raise an error" do
|
22
|
+
assert_raises ArgumentError do
|
23
|
+
@outline_level = Rocx::Properties::OutlineLevel.new(:big)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "with integers less than 0, it" do
|
29
|
+
should "raise an error" do
|
30
|
+
assert_raises ArgumentError do
|
31
|
+
@outline_level = Rocx::Properties::OutlineLevel.new(-1)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "with valid value, it" do
|
37
|
+
setup do
|
38
|
+
@outline_level = Rocx::Properties::OutlineLevel.new(2)
|
39
|
+
end
|
40
|
+
|
41
|
+
should "return the proper XML" do
|
42
|
+
assert_equal "<w:outlineLvl w:val=\"2\"/>", xml(outline_level)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class OverflowPunctuationTest < PropertyTest
|
4
|
+
attr_reader :overflow_punctuation
|
5
|
+
|
6
|
+
context "always" do
|
7
|
+
setup do
|
8
|
+
@overflow_punctuation = Rocx::Properties::OverflowPunctuation.new(false)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have the right tag" do
|
12
|
+
assert_equal :overflowPunct, overflow_punctuation.tag
|
13
|
+
end
|
14
|
+
|
15
|
+
should "have the right name" do
|
16
|
+
assert_equal "overflow_punctuation", overflow_punctuation.name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when the value is true, it" do
|
21
|
+
setup do
|
22
|
+
@overflow_punctuation = Rocx::Properties::OverflowPunctuation.new(true)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "return XML" do
|
26
|
+
assert_equal "<w:overflowPunct w:val=\"true\"/>", xml(overflow_punctuation)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when the value is false, it" do
|
31
|
+
setup do
|
32
|
+
@overflow_punctuation = Rocx::Properties::OverflowPunctuation.new(false)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "not return XML" do
|
36
|
+
assert_equal "", xml(overflow_punctuation)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when the value is nil, it" do
|
41
|
+
setup do
|
42
|
+
@overflow_punctuation = Rocx::Properties::OverflowPunctuation.new(nil)
|
43
|
+
end
|
44
|
+
|
45
|
+
should "not return XML" do
|
46
|
+
assert_equal "", xml(overflow_punctuation)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class PageBreakBeforeTest < PropertyTest
|
4
|
+
attr_reader :page_break_before
|
5
|
+
|
6
|
+
context "always" do
|
7
|
+
setup do
|
8
|
+
@page_break_before = Rocx::Properties::PageBreakBefore.new(false)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have the right tag" do
|
12
|
+
assert_equal :pageBreakBefore, page_break_before.tag
|
13
|
+
end
|
14
|
+
|
15
|
+
should "have the right name" do
|
16
|
+
assert_equal "page_break_before", page_break_before.name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when the value is true, it" do
|
21
|
+
setup do
|
22
|
+
@page_break_before = Rocx::Properties::PageBreakBefore.new(true)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "return XML" do
|
26
|
+
assert_equal "<w:pageBreakBefore/>", xml(page_break_before)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when the value is false, it" do
|
31
|
+
setup do
|
32
|
+
@page_break_before = Rocx::Properties::PageBreakBefore.new(false)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "not return XML" do
|
36
|
+
assert_equal "", xml(page_break_before)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when the value is nil, it" do
|
41
|
+
setup do
|
42
|
+
@page_break_before = Rocx::Properties::PageBreakBefore.new(nil)
|
43
|
+
end
|
44
|
+
|
45
|
+
should "not return XML" do
|
46
|
+
assert_equal "", xml(page_break_before)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class SnapToGridTest < PropertyTest
|
4
|
+
attr_reader :snap_to_grid
|
5
|
+
|
6
|
+
context "always" do
|
7
|
+
setup do
|
8
|
+
@snap_to_grid = Rocx::Properties::SnapToGrid.new(:on)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have the right tag" do
|
12
|
+
assert_equal :snapToGrid, snap_to_grid.tag
|
13
|
+
end
|
14
|
+
|
15
|
+
should "have the right name" do
|
16
|
+
assert_equal "snap_to_grid", snap_to_grid.name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when the value is on, it" do
|
21
|
+
setup do
|
22
|
+
@snap_to_grid = Rocx::Properties::SnapToGrid.new(:on)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "return XML to that effect" do
|
26
|
+
assert_equal "<w:snapToGrid w:val=\"on\"/>", xml(snap_to_grid)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when the value is off, it" do
|
31
|
+
setup do
|
32
|
+
@snap_to_grid = Rocx::Properties::SnapToGrid.new(:off)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "return XML to that effect" do
|
36
|
+
assert_equal "<w:snapToGrid w:val=\"off\"/>", xml(snap_to_grid)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when the value is nil, it" do
|
41
|
+
setup do
|
42
|
+
@snap_to_grid = Rocx::Properties::SnapToGrid.new(nil)
|
43
|
+
end
|
44
|
+
|
45
|
+
should "not return XML" do
|
46
|
+
assert_equal "", xml(snap_to_grid)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class SupressAutoHyphensTest < PropertyTest
|
4
|
+
attr_reader :supress_auto_hyphens
|
5
|
+
|
6
|
+
context "always" do
|
7
|
+
setup do
|
8
|
+
@supress_auto_hyphens = Rocx::Properties::SupressAutoHyphens.new(false)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have the right tag" do
|
12
|
+
assert_equal :supressAutoHyphens, supress_auto_hyphens.tag
|
13
|
+
end
|
14
|
+
|
15
|
+
should "have the right name" do
|
16
|
+
assert_equal "supress_auto_hyphens", supress_auto_hyphens.name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when the value is true, it" do
|
21
|
+
setup do
|
22
|
+
@supress_auto_hyphens = Rocx::Properties::SupressAutoHyphens.new(true)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "return XML" do
|
26
|
+
assert_equal "<w:supressAutoHyphens/>", xml(supress_auto_hyphens)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when the value is false, it" do
|
31
|
+
setup do
|
32
|
+
@supress_auto_hyphens = Rocx::Properties::SupressAutoHyphens.new(false)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "not return XML" do
|
36
|
+
assert_equal "", xml(supress_auto_hyphens)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when the value is nil, it" do
|
41
|
+
setup do
|
42
|
+
@supress_auto_hyphens = Rocx::Properties::SupressAutoHyphens.new(nil)
|
43
|
+
end
|
44
|
+
|
45
|
+
should "not return XML" do
|
46
|
+
assert_equal "", xml(supress_auto_hyphens)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class SupressLineNumbersTest < PropertyTest
|
4
|
+
attr_reader :supress_line_numbers
|
5
|
+
|
6
|
+
context "always" do
|
7
|
+
setup do
|
8
|
+
@supress_line_numbers = Rocx::Properties::SupressLineNumbers.new(false)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have the right tag" do
|
12
|
+
assert_equal :supressLineNumbers, supress_line_numbers.tag
|
13
|
+
end
|
14
|
+
|
15
|
+
should "have the right name" do
|
16
|
+
assert_equal "supress_line_numbers", supress_line_numbers.name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when the value is true, it" do
|
21
|
+
setup do
|
22
|
+
@supress_line_numbers = Rocx::Properties::SupressLineNumbers.new(true)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "return XML" do
|
26
|
+
assert_equal "<w:supressLineNumbers/>", xml(supress_line_numbers)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when the value is false, it" do
|
31
|
+
setup do
|
32
|
+
@supress_line_numbers = Rocx::Properties::SupressLineNumbers.new(false)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "not return XML" do
|
36
|
+
assert_equal "", xml(supress_line_numbers)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when the value is nil, it" do
|
41
|
+
setup do
|
42
|
+
@supress_line_numbers = Rocx::Properties::SupressLineNumbers.new(nil)
|
43
|
+
end
|
44
|
+
|
45
|
+
should "not return XML" do
|
46
|
+
assert_equal "", xml(supress_line_numbers)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class SupressOverlapTest < PropertyTest
|
4
|
+
attr_reader :supress_overlap
|
5
|
+
|
6
|
+
context "always" do
|
7
|
+
setup do
|
8
|
+
@supress_overlap = Rocx::Properties::SupressOverlap.new(false)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have the right tag" do
|
12
|
+
assert_equal :supressOverlap, supress_overlap.tag
|
13
|
+
end
|
14
|
+
|
15
|
+
should "have the right name" do
|
16
|
+
assert_equal "supress_overlap", supress_overlap.name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when the value is true, it" do
|
21
|
+
setup do
|
22
|
+
@supress_overlap = Rocx::Properties::SupressOverlap.new(true)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "return XML" do
|
26
|
+
assert_equal "<w:supressOverlap/>", xml(supress_overlap)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when the value is false, it" do
|
31
|
+
setup do
|
32
|
+
@supress_overlap = Rocx::Properties::SupressOverlap.new(false)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "not return XML" do
|
36
|
+
assert_equal "", xml(supress_overlap)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when the value is nil, it" do
|
41
|
+
setup do
|
42
|
+
@supress_overlap = Rocx::Properties::SupressOverlap.new(nil)
|
43
|
+
end
|
44
|
+
|
45
|
+
should "not return XML" do
|
46
|
+
assert_equal "", xml(supress_overlap)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class WidowControlTest < PropertyTest
|
4
|
+
attr_reader :widow_control
|
5
|
+
|
6
|
+
context "always" do
|
7
|
+
setup do
|
8
|
+
@widow_control = Rocx::Properties::WidowControl.new(:on)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have the right tag" do
|
12
|
+
assert_equal :widowControl, widow_control.tag
|
13
|
+
end
|
14
|
+
|
15
|
+
should "have the right name" do
|
16
|
+
assert_equal "widow_control", widow_control.name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when the value is on, it" do
|
21
|
+
setup do
|
22
|
+
@widow_control = Rocx::Properties::WidowControl.new(:on)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "return XML to that effect" do
|
26
|
+
assert_equal "<w:widowControl w:val=\"on\"/>", xml(widow_control)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when the value is off, it" do
|
31
|
+
setup do
|
32
|
+
@widow_control = Rocx::Properties::WidowControl.new(:off)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "return XML to that effect" do
|
36
|
+
assert_equal "<w:widowControl w:val=\"off\"/>", xml(widow_control)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when the value is nil, it" do
|
41
|
+
setup do
|
42
|
+
@widow_control = Rocx::Properties::WidowControl.new(nil)
|
43
|
+
end
|
44
|
+
|
45
|
+
should "not return XML" do
|
46
|
+
assert_equal "", xml(widow_control)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class WordWrapTest < PropertyTest
|
4
|
+
attr_reader :word_wrap
|
5
|
+
|
6
|
+
context "always" do
|
7
|
+
setup do
|
8
|
+
@word_wrap = Rocx::Properties::WordWrap.new(:on)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have the right tag" do
|
12
|
+
assert_equal :wordWrap, word_wrap.tag
|
13
|
+
end
|
14
|
+
|
15
|
+
should "have the right name" do
|
16
|
+
assert_equal "word_wrap", word_wrap.name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when the value is on, it" do
|
21
|
+
setup do
|
22
|
+
@word_wrap = Rocx::Properties::WordWrap.new(:on)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "return XML to that effect" do
|
26
|
+
assert_equal "<w:wordWrap w:val=\"on\"/>", xml(word_wrap)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when the value is off, it" do
|
31
|
+
setup do
|
32
|
+
@word_wrap = Rocx::Properties::WordWrap.new(:off)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "return XML to that effect" do
|
36
|
+
assert_equal "<w:wordWrap w:val=\"off\"/>", xml(word_wrap)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when the value is nil, it" do
|
41
|
+
setup do
|
42
|
+
@word_wrap = Rocx::Properties::WordWrap.new(nil)
|
43
|
+
end
|
44
|
+
|
45
|
+
should "not return XML" do
|
46
|
+
assert_equal "", xml(word_wrap)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|