ebot-hiking 0.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/README ADDED
@@ -0,0 +1,8 @@
1
+ This program utilizes the camping micro-framework
2
+ to create a web based xpath interpreter.
3
+
4
+ Pastie at http://pastie.org/pastes/212350
5
+
6
+ Author:: Ed Botzum (mailto:blog@edbotz.us)
7
+ Copyright:: Copyright (c) 2008 edbotz.us
8
+ License:: Distributes under the same terms as Ruby
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'hiking'
4
+ require 'webrick/httpserver'
5
+ require 'camping/webrick'
6
+
7
+ puts ''
8
+ puts '** Start your hike down the xpath at http://localhost:5501 **'
9
+ puts '** End your hike down the xpath with Ctrl+C **'
10
+ puts ''
11
+
12
+ s = WEBrick::HTTPServer.new :BindAddress => "0.0.0.0", :Port => 5501
13
+ s.mount "/", WEBrick::CampingHandler, Hiking
14
+
15
+ # This lets Ctrl+C shut down your server
16
+ trap(:INT) do
17
+ s.shutdown
18
+ end
19
+
20
+ s.start
@@ -0,0 +1,37 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{hiking}
5
+ s.version = "0.1.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Ed Botzum"]
9
+ s.date = %q{2008-11-10}
10
+ s.default_executable = %q{go_hiking}
11
+ s.description = %q{A tiny xpath application written with the camping microframework.}
12
+ s.email = %q{contact@edbotz.us}
13
+ s.executables = ["go_hiking"]
14
+ s.extra_rdoc_files = ["bin/go_hiking", "README"]
15
+ s.files = ["bin/go_hiking", "Manifest", "public/hiking.rb", "Rakefile", "README", "test/test_hiking.rb", "hiking.gemspec"]
16
+ s.has_rdoc = true
17
+ s.homepage = %q{http://github.com/ebot/hiking}
18
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Hiking", "--main", "README"]
19
+ s.require_paths = ["public"]
20
+ s.rubyforge_project = %q{hiking}
21
+ s.rubygems_version = %q{1.3.1}
22
+ s.summary = %q{A tiny xpath application written with the camping microframework.}
23
+ s.test_files = ["test/test_hiking.rb"]
24
+
25
+ if s.respond_to? :specification_version then
26
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
27
+ s.specification_version = 2
28
+
29
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
30
+ s.add_development_dependency(%q<camping>, [">= 0", "= 1.5.0"])
31
+ else
32
+ s.add_dependency(%q<camping>, [">= 0", "= 1.5.0"])
33
+ end
34
+ else
35
+ s.add_dependency(%q<camping>, [">= 0", "= 1.5.0"])
36
+ end
37
+ end
@@ -0,0 +1,173 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'camping'
4
+ require "rexml/document"
5
+
6
+ include REXML
7
+
8
+ Camping.goes :Hiking
9
+
10
+ module Hiking::Controllers
11
+ class Index < R '/'
12
+ def get
13
+ @xml = input.xml
14
+ @xpath = input.xpath
15
+
16
+ unless @xml == nil
17
+ doc = Document.new input.xml
18
+ @results = XPath.match doc, input.xpath
19
+ else
20
+ @xml = "<test>\r\n<item number=\"1\">First Item</item>\r\n</test>"
21
+ end
22
+
23
+ render :index
24
+ end
25
+
26
+ def post
27
+ get
28
+ end
29
+ end
30
+
31
+ class Style < R '/style.css'
32
+ def get
33
+ @headers["Content-Type"] = "text/css; charset=utf-8"
34
+ @body = %{
35
+ body {
36
+ background-color: black;
37
+ color: white;
38
+ font-family: Courier New;
39
+ font-size: small;
40
+ }
41
+ h1 {
42
+ color: green;
43
+ font-size: 175%;
44
+ margin: 0; padding: 10px;
45
+ border-bottom: solid 1px white;
46
+ }
47
+ div.content {
48
+ padding: 10px 0px 0px 10px;
49
+ }
50
+ h2 {
51
+ color: green;
52
+ font-size: 150%;
53
+ border-bottom: solid 1px white;
54
+ width: 250px;
55
+ }
56
+ strong {
57
+ color: yellow;
58
+ font-size: 115%
59
+ }
60
+ input, textarea, button {
61
+ border: solid 1px white;
62
+ background-color: #4B4B4B;
63
+ color: white;
64
+ }
65
+ button {cursor: pointer;}
66
+ a {
67
+ color:white;
68
+ text-decoration:underline;
69
+ }
70
+ a:link {
71
+ color:white;
72
+ text-decoration:underline;
73
+ }
74
+ a:visited {
75
+ color:white;
76
+ text-decoration:underline;
77
+ }
78
+ a:active {
79
+ color:white;
80
+ text-decoration:none;
81
+ }
82
+ a:hover {
83
+ color:yellow;
84
+ text-decoration: underline;
85
+ }
86
+ div.footer {
87
+ padding: 5px 0px 5px 10px;
88
+ margin-top: 5px;
89
+ border-top: solid 1px gray;
90
+ text-align: center;
91
+ font-style: italic;
92
+ font-size: 90%;
93
+ color: lightgray;
94
+ clear: both;
95
+ }
96
+ div.results {
97
+ float: right;
98
+ margin-top: -20px;
99
+ margin-right: 20px;
100
+ display: inline;
101
+ }
102
+ * html div.results {
103
+ margin-top: -3px;
104
+ }
105
+ div.query_form {
106
+ float: left;
107
+ width: 800px;
108
+ }
109
+ }
110
+ end
111
+ end
112
+ end
113
+
114
+ module Hiking::Views
115
+ def layout
116
+ html do
117
+ head do
118
+ title 'Hiking - An XPATH Interpreter'
119
+ link :rel => 'stylesheet', :type => 'text/css',
120
+ :href => '/style.css', :media => 'screen'
121
+ end
122
+ body do
123
+ h1.header 'Hiking - An XPATH Interpreter'
124
+ div.content do
125
+ self << yield
126
+ end
127
+ div.footer do
128
+ p do
129
+ span 'Created by '
130
+ a(:href => 'http://edbotz.us') {'Ed Botzum'}
131
+ span ' with '
132
+ a(:href => 'http://camping.rubyforge.org/') {'Camping'}
133
+ span ' on JUN 03 2008.'
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
139
+
140
+ def index
141
+ div.query_form do
142
+ form :action => '/', :method => 'post', :name => 'query' do
143
+ fieldset do
144
+ p do
145
+ strong 'XPATH Statement: '
146
+ br
147
+ input :type => 'text', :name => 'xpath', :id => 'xpath',
148
+ :size => '108', :value => @xpath
149
+ span ' '
150
+ button(:type => 'submit') {'Query'}
151
+ end
152
+
153
+ p do
154
+ strong 'XML: '
155
+ br
156
+ textarea @xml, :name => 'xml', :id => 'xml', :rows => '15',
157
+ :cols => '90'
158
+ end
159
+ end
160
+ end
161
+ end
162
+
163
+ div.results do
164
+ h2 'Results: '
165
+ textarea @results, :name => 'results', :id => 'results',
166
+ :rows => '19', :cols => '30'
167
+ end
168
+
169
+ script <<-END, :language => "JavaScript1.2"
170
+ document.getElementById('xpath').focus();
171
+ END
172
+ end
173
+ end
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+ require 'mosquito'
3
+ require File.dirname(__FILE__) + "/../public/hiking"
4
+
5
+ class TestHiking < Camping::WebTest
6
+ test_xml = '<test><item number="1">First Item</item></test>'
7
+
8
+ test "should get index" do
9
+ get
10
+ assert_response :success
11
+ assert_match_body %r{&lt;test&gt;\r\n&lt;item number=\"1\"&gt;First Item&lt;/item&gt;\r\n&lt;/test&gt;}
12
+ end
13
+
14
+ test "should parse xml" do
15
+ post '/',
16
+ :xml => test_xml,
17
+ :xpath => "/test/item/@number",
18
+ :body => "Body"
19
+
20
+ assert_response :success
21
+
22
+ assert_match_body %r{<textarea name=\"results\" cols=\"30\" rows=\"19\" id=\"results\">1</textarea>}
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ebot-hiking
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ed Botzum
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-11-10 00:00:00 -08:00
13
+ default_executable: go_hiking
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: camping
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ - - "="
24
+ - !ruby/object:Gem::Version
25
+ version: 1.5.0
26
+ version:
27
+ description: A tiny xpath application written with the camping microframework.
28
+ email: contact@edbotz.us
29
+ executables:
30
+ - go_hiking
31
+ extensions: []
32
+
33
+ extra_rdoc_files:
34
+ - bin/go_hiking
35
+ - README
36
+ files:
37
+ - bin/go_hiking
38
+ - Manifest
39
+ - public/hiking.rb
40
+ - Rakefile
41
+ - README
42
+ - test/test_hiking.rb
43
+ - hiking.gemspec
44
+ has_rdoc: true
45
+ homepage: http://github.com/ebot/hiking
46
+ post_install_message:
47
+ rdoc_options:
48
+ - --line-numbers
49
+ - --inline-source
50
+ - --title
51
+ - Hiking
52
+ - --main
53
+ - README
54
+ require_paths:
55
+ - public
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: "0"
61
+ version:
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "1.2"
67
+ version:
68
+ requirements: []
69
+
70
+ rubyforge_project: hiking
71
+ rubygems_version: 1.2.0
72
+ signing_key:
73
+ specification_version: 2
74
+ summary: A tiny xpath application written with the camping microframework.
75
+ test_files:
76
+ - test/test_hiking.rb