tabular-text 0.0.1

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.
Files changed (49) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +17 -0
  3. data/Rakefile +38 -0
  4. data/lib/tabular-text.rb +21 -0
  5. data/lib/tabular-text/builder.rb +18 -0
  6. data/lib/tabular-text/field.rb +36 -0
  7. data/lib/tabular-text/handler.rb +11 -0
  8. data/lib/tabular-text/line.rb +15 -0
  9. data/lib/tabular-text/version.rb +3 -0
  10. data/lib/tasks/tabular-text_tasks.rake +4 -0
  11. data/test/dummy/README.rdoc +261 -0
  12. data/test/dummy/Rakefile +7 -0
  13. data/test/dummy/app/assets/javascripts/application.js +15 -0
  14. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  15. data/test/dummy/app/controllers/application_controller.rb +3 -0
  16. data/test/dummy/app/controllers/home_controller.rb +9 -0
  17. data/test/dummy/app/helpers/application_helper.rb +2 -0
  18. data/test/dummy/app/views/home/index.text.tab +3 -0
  19. data/test/dummy/app/views/home/index.txt.tab +3 -0
  20. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  21. data/test/dummy/config.ru +4 -0
  22. data/test/dummy/config/application.rb +56 -0
  23. data/test/dummy/config/boot.rb +10 -0
  24. data/test/dummy/config/database.yml +25 -0
  25. data/test/dummy/config/environment.rb +5 -0
  26. data/test/dummy/config/environments/development.rb +37 -0
  27. data/test/dummy/config/environments/production.rb +67 -0
  28. data/test/dummy/config/environments/test.rb +37 -0
  29. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  30. data/test/dummy/config/initializers/inflections.rb +15 -0
  31. data/test/dummy/config/initializers/mime_types.rb +5 -0
  32. data/test/dummy/config/initializers/secret_token.rb +7 -0
  33. data/test/dummy/config/initializers/session_store.rb +8 -0
  34. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  35. data/test/dummy/config/locales/en.yml +5 -0
  36. data/test/dummy/config/routes.rb +59 -0
  37. data/test/dummy/public/404.html +26 -0
  38. data/test/dummy/public/422.html +26 -0
  39. data/test/dummy/public/500.html +25 -0
  40. data/test/dummy/public/favicon.ico +0 -0
  41. data/test/dummy/script/rails +6 -0
  42. data/test/integration/navigation_test.rb +24 -0
  43. data/test/support/integration_case.rb +6 -0
  44. data/test/tabular-text_test.rb +4 -0
  45. data/test/test_helper.rb +10 -0
  46. data/test/unit/builder_test.rb +21 -0
  47. data/test/unit/field_test.rb +47 -0
  48. data/test/unit/line_test.rb +23 -0
  49. metadata +181 -0
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,24 @@
1
+ require 'test_helper'
2
+
3
+ class NavigationTest < ActiveSupport::IntegrationCase
4
+ setup do
5
+ visit root_path(format: 'text')
6
+ end
7
+
8
+ test 'renders using tabular' do
9
+ assert_match /tabular-text/, page.body
10
+ end
11
+
12
+ test 'renders as text/plain' do
13
+ assert_match /text\/plain/, headers['Content-Type']
14
+ end
15
+
16
+ test 'renders as attachment' do
17
+ assert_equal 'attachment; filename="tabular.txt"',
18
+ headers['Content-Disposition']
19
+ end
20
+
21
+ def headers
22
+ page.response_headers
23
+ end
24
+ end
@@ -0,0 +1,6 @@
1
+ require 'capybara/rails'
2
+
3
+ class ActiveSupport::IntegrationCase < ActiveSupport::TestCase
4
+ include Capybara::DSL
5
+ include Rails.application.routes.url_helpers
6
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class TabularTextTest < ActiveSupport::TestCase
4
+ end
@@ -0,0 +1,10 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+
7
+ Rails.backtrace_cleaner.remove_silencers!
8
+
9
+ # Load support files
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class TabularTextBuilderTest < ActiveSupport::TestCase
6
+ setup do
7
+ @builder = TabularText::Builder.new
8
+
9
+ 2.times do
10
+ @builder.line { |l| l.field "STR" }
11
+ end
12
+ end
13
+
14
+ test 'joins lines with CR+LF'do
15
+ assert_equal "STR\r\nSTR", @builder.render
16
+ end
17
+
18
+ test 'returns ascii' do
19
+ assert_equal Encoding::ASCII, @builder.render.encoding
20
+ end
21
+ end
@@ -0,0 +1,47 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class TabularTextFieldTest < ActiveSupport::TestCase
6
+ include TabularText
7
+
8
+ test 'string without length returns string' do
9
+ assert_equal "STRING", Field.new("STRING").to_s
10
+ end
11
+
12
+ test 'string with length pads with spaces to the right' do
13
+ assert_equal "STRING ", Field.new("STRING", 10).to_s
14
+ end
15
+
16
+ test 'string too big for length gets cut' do
17
+ assert_equal "STR", Field.new("STRING", 3).to_s
18
+ end
19
+
20
+ test 'nil with length pads with spaces to the right' do
21
+ assert_equal " " * 5, Field.new(nil, 5).to_s
22
+ end
23
+
24
+ test 'number without length returns number' do
25
+ assert_equal "123", Field.new(123).to_s
26
+ end
27
+
28
+ test 'number with length pads with zeros to the left' do
29
+ assert_equal "00123", Field.new(123, 5).to_s
30
+ end
31
+
32
+ test 'time returns YYYYMMDD' do
33
+ assert_equal "19901216", Field.new(Time.new(1990, 12, 16)).to_s
34
+ end
35
+
36
+ test 'date returns YYYYMMDD' do
37
+ assert_equal "19901216", Field.new(Date.new(1990, 12, 16)).to_s
38
+ end
39
+
40
+ test 'is ascii' do
41
+ assert_equal Encoding::ASCII, Field.new("STRING").to_s.encoding
42
+ end
43
+
44
+ test 'special chars get normalized' do
45
+ assert_equal "nao", Field.new("não").to_s
46
+ end
47
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class TabularTextLineTest < ActiveSupport::TestCase
6
+ setup do
7
+ @line = TabularText::Line.new
8
+ end
9
+
10
+ test 'joins fields'do
11
+ 2.times do
12
+ @line.field "STR"
13
+ end
14
+
15
+ assert_equal "STRSTR", @line.to_s
16
+ end
17
+
18
+ test 'creates with content and length' do
19
+ @line.field "STR", 10
20
+
21
+ assert_equal TabularText::Field.new("STR", 10).to_s, @line.to_s
22
+ end
23
+ end
metadata ADDED
@@ -0,0 +1,181 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tabular-text
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Elomar Souza
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.2
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: sqlite3
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: capybara
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: ! "You know those times when you're dealing with a 10-year-old government
63
+ API and they require a text file\n where every field has to be in a certain position?
64
+ TabularText for the rescue!"
65
+ email:
66
+ - elomar@elomar.me
67
+ executables: []
68
+ extensions: []
69
+ extra_rdoc_files: []
70
+ files:
71
+ - lib/tabular-text/builder.rb
72
+ - lib/tabular-text/field.rb
73
+ - lib/tabular-text/handler.rb
74
+ - lib/tabular-text/line.rb
75
+ - lib/tabular-text/version.rb
76
+ - lib/tabular-text.rb
77
+ - lib/tasks/tabular-text_tasks.rake
78
+ - MIT-LICENSE
79
+ - Rakefile
80
+ - README.rdoc
81
+ - test/dummy/app/assets/javascripts/application.js
82
+ - test/dummy/app/assets/stylesheets/application.css
83
+ - test/dummy/app/controllers/application_controller.rb
84
+ - test/dummy/app/controllers/home_controller.rb
85
+ - test/dummy/app/helpers/application_helper.rb
86
+ - test/dummy/app/views/home/index.text.tab
87
+ - test/dummy/app/views/home/index.txt.tab
88
+ - test/dummy/app/views/layouts/application.html.erb
89
+ - test/dummy/config/application.rb
90
+ - test/dummy/config/boot.rb
91
+ - test/dummy/config/database.yml
92
+ - test/dummy/config/environment.rb
93
+ - test/dummy/config/environments/development.rb
94
+ - test/dummy/config/environments/production.rb
95
+ - test/dummy/config/environments/test.rb
96
+ - test/dummy/config/initializers/backtrace_silencers.rb
97
+ - test/dummy/config/initializers/inflections.rb
98
+ - test/dummy/config/initializers/mime_types.rb
99
+ - test/dummy/config/initializers/secret_token.rb
100
+ - test/dummy/config/initializers/session_store.rb
101
+ - test/dummy/config/initializers/wrap_parameters.rb
102
+ - test/dummy/config/locales/en.yml
103
+ - test/dummy/config/routes.rb
104
+ - test/dummy/config.ru
105
+ - test/dummy/public/404.html
106
+ - test/dummy/public/422.html
107
+ - test/dummy/public/500.html
108
+ - test/dummy/public/favicon.ico
109
+ - test/dummy/Rakefile
110
+ - test/dummy/README.rdoc
111
+ - test/dummy/script/rails
112
+ - test/integration/navigation_test.rb
113
+ - test/support/integration_case.rb
114
+ - test/tabular-text_test.rb
115
+ - test/test_helper.rb
116
+ - test/unit/builder_test.rb
117
+ - test/unit/field_test.rb
118
+ - test/unit/line_test.rb
119
+ homepage: http://github.com/elomar/tabular-text
120
+ licenses: []
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ requirements: []
138
+ rubyforge_project:
139
+ rubygems_version: 1.8.23
140
+ signing_key:
141
+ specification_version: 3
142
+ summary: Generate position-based text files
143
+ test_files:
144
+ - test/dummy/app/assets/javascripts/application.js
145
+ - test/dummy/app/assets/stylesheets/application.css
146
+ - test/dummy/app/controllers/application_controller.rb
147
+ - test/dummy/app/controllers/home_controller.rb
148
+ - test/dummy/app/helpers/application_helper.rb
149
+ - test/dummy/app/views/home/index.text.tab
150
+ - test/dummy/app/views/home/index.txt.tab
151
+ - test/dummy/app/views/layouts/application.html.erb
152
+ - test/dummy/config/application.rb
153
+ - test/dummy/config/boot.rb
154
+ - test/dummy/config/database.yml
155
+ - test/dummy/config/environment.rb
156
+ - test/dummy/config/environments/development.rb
157
+ - test/dummy/config/environments/production.rb
158
+ - test/dummy/config/environments/test.rb
159
+ - test/dummy/config/initializers/backtrace_silencers.rb
160
+ - test/dummy/config/initializers/inflections.rb
161
+ - test/dummy/config/initializers/mime_types.rb
162
+ - test/dummy/config/initializers/secret_token.rb
163
+ - test/dummy/config/initializers/session_store.rb
164
+ - test/dummy/config/initializers/wrap_parameters.rb
165
+ - test/dummy/config/locales/en.yml
166
+ - test/dummy/config/routes.rb
167
+ - test/dummy/config.ru
168
+ - test/dummy/public/404.html
169
+ - test/dummy/public/422.html
170
+ - test/dummy/public/500.html
171
+ - test/dummy/public/favicon.ico
172
+ - test/dummy/Rakefile
173
+ - test/dummy/README.rdoc
174
+ - test/dummy/script/rails
175
+ - test/integration/navigation_test.rb
176
+ - test/support/integration_case.rb
177
+ - test/tabular-text_test.rb
178
+ - test/test_helper.rb
179
+ - test/unit/builder_test.rb
180
+ - test/unit/field_test.rb
181
+ - test/unit/line_test.rb