relevant-widget 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ relevant-widget-*.gem
data/README.md ADDED
@@ -0,0 +1,13 @@
1
+ Relevant/Widget
2
+ ===============
3
+
4
+ This library is the core of the widget system for Relevant. As a result, it will be a dependency of every widget.
5
+
6
+ Registering Widgets
7
+ -------------------
8
+
9
+ In order for Relevant to be aware of your widget you will need to register it. You can do this in the same file as your widget, or you can just call it somewhere else if you'd like it to be optional.
10
+
11
+ Relevant.register FooWidget
12
+
13
+
data/Rakefile ADDED
@@ -0,0 +1,25 @@
1
+ require 'rake'
2
+ require File.dirname(__FILE__) + "/lib/relevant/version.rb"
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gemspec|
7
+ gemspec.version = Relevant::Version
8
+ gemspec.name = "relevant-widget"
9
+ gemspec.summary = "Base widget class for your mind!"
10
+ gemspec.description = "Base class to do widgets for the Relevant raditor"
11
+ gemspec.email = "opensource@thinkrelevance.com"
12
+ gemspec.homepage = "http://github.com/relevance/relevant-widget"
13
+ gemspec.authors = ["Jared Pace", "Rob Sanheim"]
14
+ gemspec.add_dependency "tilt", "1.1"
15
+ gemspec.add_development_dependency "rspec", "~> 2.0.0.beta.22"
16
+ end
17
+ Jeweler::GemcutterTasks.new
18
+
19
+ rescue LoadError
20
+ puts "Jeweler not available. Install it with: gem install jeweler"
21
+ end
22
+
23
+ require 'rspec/core/rake_task'
24
+ RSpec::Core::RakeTask.new(:spec)
25
+ task :default => :spec
@@ -0,0 +1,18 @@
1
+
2
+ module Relevant
3
+
4
+ @widgets = []
5
+
6
+ def self.widgets
7
+ @widgets
8
+ end
9
+
10
+ def self.register(widget)
11
+ @widgets << widget
12
+ end
13
+
14
+ def self.unregister_all!
15
+ @widgets = []
16
+ end
17
+
18
+ end
@@ -0,0 +1,16 @@
1
+ module Relevant
2
+
3
+ class Renderer
4
+ def initialize(widget)
5
+ @widget = widget
6
+ end
7
+
8
+ def to_html
9
+ return unless @widget.class.template
10
+
11
+ template_handler = Tilt[@widget.class.template_format].new { @widget.class.template.strip }
12
+ template_handler.render(@widget)
13
+ end
14
+ end
15
+
16
+ end
@@ -0,0 +1,3 @@
1
+ module Relevant
2
+ Version = VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,41 @@
1
+ require "tilt"
2
+ require "relevant/relevant"
3
+ require "relevant/renderer"
4
+
5
+ module Relevant
6
+ module Widget
7
+
8
+ def self.included(base)
9
+ base.extend ClassMethods
10
+
11
+ attr_accessor :options
12
+ end
13
+
14
+ module ClassMethods
15
+
16
+ def setup(options = {})
17
+ widget = new
18
+ widget.options = options
19
+
20
+ widget
21
+ end
22
+
23
+ def available_options(options = nil)
24
+ options.nil? ? @available_options : (@available_options = options)
25
+ end
26
+
27
+ def template_format(format = nil)
28
+ format.nil? ? @template_format : (@template_format = format)
29
+ end
30
+
31
+ def template(data = nil)
32
+ data.nil? ? @template : (@template = data)
33
+ end
34
+
35
+ def refresh_every(seconds = nil)
36
+ seconds.nil? ? @refresh_every : (@refresh_every = seconds)
37
+ end
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,60 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{relevant-widget}
8
+ s.version = "0.0.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Jared Pace", "Rob Sanheim"]
12
+ s.date = %q{2010-09-24}
13
+ s.description = %q{Base class to do widgets for the Relevant raditor}
14
+ s.email = %q{opensource@thinkrelevance.com}
15
+ s.extra_rdoc_files = [
16
+ "README.md"
17
+ ]
18
+ s.files = [
19
+ ".gitignore",
20
+ "README.md",
21
+ "Rakefile",
22
+ "lib/relevant/relevant.rb",
23
+ "lib/relevant/renderer.rb",
24
+ "lib/relevant/version.rb",
25
+ "lib/relevant/widget.rb",
26
+ "relevant-widget.gemspec",
27
+ "spec/relevant/relevant_spec.rb",
28
+ "spec/relevant/renderer_spec.rb",
29
+ "spec/relevant/widget_spec.rb",
30
+ "spec/spec_helper.rb"
31
+ ]
32
+ s.homepage = %q{http://github.com/relevance/relevant-widget}
33
+ s.rdoc_options = ["--charset=UTF-8"]
34
+ s.require_paths = ["lib"]
35
+ s.rubygems_version = %q{1.3.7}
36
+ s.summary = %q{Base widget class for your mind!}
37
+ s.test_files = [
38
+ "spec/relevant/relevant_spec.rb",
39
+ "spec/relevant/renderer_spec.rb",
40
+ "spec/relevant/widget_spec.rb",
41
+ "spec/spec_helper.rb"
42
+ ]
43
+
44
+ if s.respond_to? :specification_version then
45
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
46
+ s.specification_version = 3
47
+
48
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
+ s.add_runtime_dependency(%q<tilt>, ["= 1.1"])
50
+ s.add_development_dependency(%q<rspec>, ["~> 2.0.0.beta.22"])
51
+ else
52
+ s.add_dependency(%q<tilt>, ["= 1.1"])
53
+ s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.22"])
54
+ end
55
+ else
56
+ s.add_dependency(%q<tilt>, ["= 1.1"])
57
+ s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.22"])
58
+ end
59
+ end
60
+
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Relevant do
4
+
5
+ context '#widgets' do
6
+ around do |example|
7
+ Relevant.unregister_all!
8
+ example.run
9
+ Relevant.unregister_all!
10
+ end
11
+
12
+ it "can unregister_all widgets" do
13
+ Relevant.register TestWidget
14
+ Relevant.unregister_all!
15
+ Relevant.widgets.should == []
16
+ end
17
+
18
+ it "can register widgets" do
19
+ Relevant.register TestWidget
20
+ Relevant.widgets.should == [TestWidget]
21
+ end
22
+ end
23
+
24
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Relevant::Renderer do
4
+ describe "to_html" do
5
+ it "renders the widgets template" do
6
+ TestWidget.template "Hello <%= @options[:name] %>"
7
+ TestWidget.template_format :erb
8
+ widget = TestWidget.setup(:name => 'Mr. Roboto')
9
+
10
+ renderer = Relevant::Renderer.new widget
11
+ renderer.to_html.should == "Hello Mr. Roboto"
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Relevant::Widget do
4
+ describe "options" do
5
+ it "tracks the types for form building" do
6
+ TestWidget.available_options[:name].should == String
7
+ end
8
+ end
9
+
10
+ describe 'template_format' do
11
+ it "reads the format if given no options" do
12
+ TestWidget.template_format.should == :erb
13
+ end
14
+
15
+ it "allows sets the format if you pass it" do
16
+ TestWidget.template_format :haml
17
+ TestWidget.template_format.should == :haml
18
+ end
19
+ end
20
+
21
+ describe 'template' do
22
+ it "reads the template if given no options" do
23
+ TestWidget.template.should == "Hello <%= @options[:name] %>"
24
+ end
25
+
26
+ it "allows sets the template if you pass it" do
27
+ TestWidget.template "Hello World"
28
+ TestWidget.template.should == "Hello World"
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,26 @@
1
+ require 'rspec'
2
+ require 'active_support'
3
+ require 'active_support/all'
4
+
5
+ $LOAD_PATH.unshift "../lib"
6
+ require "relevant/widget"
7
+
8
+ RSpec.configure do |config|
9
+ config.color_enabled = true
10
+ config.mock_with :mocha
11
+
12
+ config.formatter = :progress
13
+ config.color_enabled = true
14
+ config.filter_run :focused => true
15
+ config.run_all_when_everything_filtered = true
16
+ config.alias_example_to :fit, :focused => true
17
+ end
18
+
19
+ class TestWidget
20
+ include Relevant::Widget
21
+
22
+ available_options :name => String
23
+
24
+ template_format :erb
25
+ template 'Hello <%= @options[:name] %>'
26
+ end
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: relevant-widget
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 2
9
+ version: 0.0.2
10
+ platform: ruby
11
+ authors:
12
+ - Jared Pace
13
+ - Rob Sanheim
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-24 00:00:00 -04:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: tilt
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - "="
28
+ - !ruby/object:Gem::Version
29
+ segments:
30
+ - 1
31
+ - 1
32
+ version: "1.1"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 2
45
+ - 0
46
+ - 0
47
+ - beta
48
+ - 22
49
+ version: 2.0.0.beta.22
50
+ type: :development
51
+ version_requirements: *id002
52
+ description: Base class to do widgets for the Relevant raditor
53
+ email: opensource@thinkrelevance.com
54
+ executables: []
55
+
56
+ extensions: []
57
+
58
+ extra_rdoc_files:
59
+ - README.md
60
+ files:
61
+ - .gitignore
62
+ - README.md
63
+ - Rakefile
64
+ - lib/relevant/relevant.rb
65
+ - lib/relevant/renderer.rb
66
+ - lib/relevant/version.rb
67
+ - lib/relevant/widget.rb
68
+ - relevant-widget.gemspec
69
+ - spec/relevant/relevant_spec.rb
70
+ - spec/relevant/renderer_spec.rb
71
+ - spec/relevant/widget_spec.rb
72
+ - spec/spec_helper.rb
73
+ has_rdoc: true
74
+ homepage: http://github.com/relevance/relevant-widget
75
+ licenses: []
76
+
77
+ post_install_message:
78
+ rdoc_options:
79
+ - --charset=UTF-8
80
+ require_paths:
81
+ - lib
82
+ required_ruby_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 0
89
+ version: "0"
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ segments:
96
+ - 0
97
+ version: "0"
98
+ requirements: []
99
+
100
+ rubyforge_project:
101
+ rubygems_version: 1.3.7
102
+ signing_key:
103
+ specification_version: 3
104
+ summary: Base widget class for your mind!
105
+ test_files:
106
+ - spec/relevant/relevant_spec.rb
107
+ - spec/relevant/renderer_spec.rb
108
+ - spec/relevant/widget_spec.rb
109
+ - spec/spec_helper.rb