simple_view 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.
- data/Rakefile +2 -0
- data/lib/CVS/Entries +3 -0
- data/lib/CVS/Repository +1 -0
- data/lib/CVS/Root +1 -0
- data/lib/core-ext/CVS/Entries +5 -0
- data/lib/core-ext/CVS/Repository +1 -0
- data/lib/core-ext/CVS/Root +1 -0
- data/lib/core-ext/array.rb +14 -0
- data/lib/core-ext/jopen.rb +43 -0
- data/lib/core-ext/nilclass.rb +31 -0
- data/lib/core-ext/string.rb +51 -0
- data/lib/simple_view/CVS/Entries +11 -0
- data/lib/simple_view/CVS/Repository +1 -0
- data/lib/simple_view/CVS/RevisionCache/builder_view.rb#1.1.1.1 +42 -0
- data/lib/simple_view/CVS/RevisionCache/erb_view.rb#1.1.1.1 +44 -0
- data/lib/simple_view/CVS/RevisionCache/file_content.rb#1.1.1.1 +50 -0
- data/lib/simple_view/CVS/RevisionCache/io_view.rb#1.1.1.1 +37 -0
- data/lib/simple_view/CVS/RevisionCache/poi_view.rb#1.1.1.1 +116 -0
- data/lib/simple_view/CVS/RevisionCache/renderable.rb#1.1.1.1 +114 -0
- data/lib/simple_view/CVS/RevisionCache/simple_view.rb#1.1.1.1 +214 -0
- data/lib/simple_view/CVS/Root +1 -0
- data/lib/simple_view/builder_view.rb +42 -0
- data/lib/simple_view/erb_view.rb +44 -0
- data/lib/simple_view/file_content.rb +50 -0
- data/lib/simple_view/haml_view.rb +36 -0
- data/lib/simple_view/io_view.rb +37 -0
- data/lib/simple_view/java/CVS/Entries +1 -0
- data/lib/simple_view/java/CVS/Repository +1 -0
- data/lib/simple_view/java/CVS/Root +1 -0
- data/lib/simple_view/java/poi/CVS/Entries +6 -0
- data/lib/simple_view/java/poi/CVS/Repository +1 -0
- data/lib/simple_view/java/poi/CVS/Root +1 -0
- data/lib/simple_view/java/poi/poi-3.6-20091214.jar +0 -0
- data/lib/simple_view/java/poi/poi-contrib-3.6-20091214.jar +0 -0
- data/lib/simple_view/java/poi/poi-ooxml-3.6-20091214.jar +0 -0
- data/lib/simple_view/java/poi/poi-ooxml-schemas-3.6-20091214.jar +0 -0
- data/lib/simple_view/java/poi/poi-scratchpad-3.6-20091214.jar +0 -0
- data/lib/simple_view/poi_view.rb +116 -0
- data/lib/simple_view/renderable.rb +114 -0
- data/lib/simple_view/simple_view.rb +214 -0
- data/lib/simple_view/smartxls.rb +38 -0
- data/lib/simple_view/version.rb +3 -0
- data/lib/simple_view.rb +5 -0
- data/test/CVS/Entries +6 -0
- data/test/CVS/Repository +1 -0
- data/test/CVS/RevisionCache/test_view.rb#1.1.1.1 +25 -0
- data/test/CVS/RevisionCache/test_view_reuse_erb.rb#1.1.1.1 +21 -0
- data/test/CVS/Root +1 -0
- data/test/helpers/CVS/Entries +3 -0
- data/test/helpers/CVS/Repository +1 -0
- data/test/helpers/CVS/RevisionCache/test_helper.rb#1.1.1.1 +7 -0
- data/test/helpers/CVS/Root +1 -0
- data/test/helpers/etat_corbeilles_prc_helper.rb +13 -0
- data/test/helpers/test_helper.rb +7 -0
- data/test/jtest_view.rb +17 -0
- data/test/test_view.rb +25 -0
- data/test/test_view_reuse_erb.rb +21 -0
- data/test/test_view_sv_debug.rb +16 -0
- data/test/views/CVS/Entries +17 -0
- data/test/views/CVS/Repository +1 -0
- data/test/views/CVS/RevisionCache/test.erb#1.1.1.1 +2 -0
- data/test/views/CVS/Root +1 -0
- data/test/views/etat_corbeilles_prc-csv.io.rb +40 -0
- data/test/views/etat_corbeilles_prc-xls.poi.rb +97 -0
- data/test/views/etat_corbeilles_prc-xls2.smartxl.rb +128 -0
- data/test/views/etat_corbeilles_prc.html.erb +108 -0
- data/test/views/test-builder.builder.rb +1 -0
- data/test/views/test-erb.erb +1 -0
- data/test/views/test-model.xls +0 -0
- data/test/views/test-model.xlsx +0 -0
- data/test/views/test-xls.poi.rb +34 -0
- data/test/views/test-xls.smartxl.rb +80 -0
- data/test/views/test.builder.rb +1 -0
- data/test/views/test.erb +2 -0
- data/test/views/test.haml +1 -0
- data/test/views/test.io.rb +1 -0
- data/test/views/test.poi.rb +7 -0
- data/test/views/test_error.erb +1 -0
- metadata +177 -0
data/Rakefile
ADDED
data/lib/CVS/Entries
ADDED
data/lib/CVS/Repository
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
simple_view/lib
|
data/lib/CVS/Root
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
:pserver:gie\barukh@esvwas51.si.fr:/repositories/aag
|
@@ -0,0 +1 @@
|
|
1
|
+
simple_view/lib/core-ext
|
@@ -0,0 +1 @@
|
|
1
|
+
:pserver:gie\barukh@esvwas51.si.fr:/repositories/aag
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Array
|
2
|
+
# Extracts options from a set of arguments. Removes and returns the last
|
3
|
+
# element in the array if it's a hash, otherwise returns a blank hash.
|
4
|
+
#
|
5
|
+
# def options(*args)
|
6
|
+
# args.extract_options!
|
7
|
+
# end
|
8
|
+
#
|
9
|
+
# options(1, 2) # => {}
|
10
|
+
# options(1, 2, :a => :b) # => {:a=>:b}
|
11
|
+
def extract_options!
|
12
|
+
last.is_a?(::Hash) ? pop : {}
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import java.io.PrintStream
|
2
|
+
import java.io.FileOutputStream
|
3
|
+
import java.io.InputStreamReader
|
4
|
+
import java.io.FileInputStream
|
5
|
+
|
6
|
+
module Kernel
|
7
|
+
|
8
|
+
def jopen(filename, mode, encode = "ISO-8859-1")
|
9
|
+
stream = nil
|
10
|
+
if mode == "r"
|
11
|
+
stream = read_stream(filename, encode)
|
12
|
+
elsif mode == "w"
|
13
|
+
stream = write_stream(filename, encode)
|
14
|
+
end
|
15
|
+
if block_given?
|
16
|
+
begin
|
17
|
+
yield stream
|
18
|
+
ensure
|
19
|
+
stream.close
|
20
|
+
end
|
21
|
+
else
|
22
|
+
return stream
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def write_stream(filename, encode = "ISO-8859-1")
|
27
|
+
PrintStream.new(FileOutputStream.new(filename), false, encode)
|
28
|
+
end
|
29
|
+
|
30
|
+
def read_stream(filename, encode = "ISO-8859-1")
|
31
|
+
InputStreamReader.new(FileInputStream.new(filename), encode)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
class PrintStream
|
37
|
+
|
38
|
+
def <<(obj)
|
39
|
+
self.print(obj)
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Egocentric nil
|
2
|
+
# code by Yohan, slightly edited and comments by me
|
3
|
+
|
4
|
+
# start ego mode block, usage:
|
5
|
+
# catch_nil do
|
6
|
+
# if @some_hash[:some_key].to_formatted_array[3]
|
7
|
+
# # do something
|
8
|
+
# end
|
9
|
+
# end
|
10
|
+
module Kernel
|
11
|
+
def catch_nil(&block)
|
12
|
+
# grip methods
|
13
|
+
ori_method_missing = NilClass.instance_method(:method_missing)
|
14
|
+
catch_method_missing = NilClass.instance_method(:catch_method_missing)
|
15
|
+
# activate ego mode
|
16
|
+
NilClass.send :define_method, :method_missing, catch_method_missing
|
17
|
+
# run code
|
18
|
+
yield
|
19
|
+
ensure
|
20
|
+
# no matter what happens: restore default nil behaviour
|
21
|
+
NilClass.send :define_method, :method_missing, ori_method_missing
|
22
|
+
end
|
23
|
+
end
|
24
|
+
#alias :egonil :catch_nil # ;)
|
25
|
+
|
26
|
+
# this is the ego nil
|
27
|
+
class NilClass
|
28
|
+
def catch_method_missing(m, *args, &block)
|
29
|
+
nil
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
class String
|
2
|
+
|
3
|
+
# Converts a string to camelcase.
|
4
|
+
#
|
5
|
+
# By default camelcase leaves the first character of the string as given.
|
6
|
+
# If +first_letter+ is set to +:lower+ or +false+, then +#camelcase+ will
|
7
|
+
# produce lowerCamelCase. If it is set to +:upper+ or +true+ it will
|
8
|
+
# produce UpperCamelCase.
|
9
|
+
#
|
10
|
+
# +#camelcase+ also converts '/' to '::' which is useful for converting
|
11
|
+
# paths to namespaces.
|
12
|
+
#
|
13
|
+
# Examples
|
14
|
+
# "camel_case".camelcase #=> "camelCase"
|
15
|
+
# "camel/case".camelcase(true) #=> "Camel::Case"
|
16
|
+
# "Camel_case".camelcase(false) #=> "camelCase"
|
17
|
+
#
|
18
|
+
# TODO: Is this the best approach? Should lowerCamelCase be default instead?
|
19
|
+
def camelcase(first_letter=nil)
|
20
|
+
case first_letter
|
21
|
+
when :upper, true
|
22
|
+
upper_camelcase
|
23
|
+
when :lower, false
|
24
|
+
lower_camelcase
|
25
|
+
else
|
26
|
+
str = dup
|
27
|
+
str.gsub!(/\/(.?)/){ "::#{$1.upcase}" } # NOT SO SURE ABOUT THIS
|
28
|
+
str.gsub!(/(?:_+|-+)([a-z])/){ $1.upcase }
|
29
|
+
#str.gsub!(/(\A|\s)([a-z])/){ $1 + $2.upcase }
|
30
|
+
str
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def upper_camelcase
|
35
|
+
str = dup
|
36
|
+
str.gsub!(/\/(.?)/){ "::#{$1.upcase}" } # NOT SO SURE ABOUT THIS
|
37
|
+
str.gsub!(/(?:_+|-+)([a-z])/){ $1.upcase }
|
38
|
+
str.gsub!(/(\A|\s)([a-z])/){ $1 + $2.upcase }
|
39
|
+
str
|
40
|
+
end
|
41
|
+
|
42
|
+
def lower_camelcase
|
43
|
+
str = dup
|
44
|
+
str.gsub!(/\/(.?)/){ "::#{$1.upcase}" } # NOT SO SURE ABOUT THIS
|
45
|
+
str.gsub!(/(?:_+|-+)([a-z])/){ $1.upcase }
|
46
|
+
str.gsub!(/(\A|\s)([A-Z])/){ $1 + $2.downcase }
|
47
|
+
str
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
/builder_view.rb/1.1.1.1/Tue Dec 07 12:02:41 2010//
|
2
|
+
/erb_view.rb/1.1.1.1/Tue Dec 07 12:02:41 2010//
|
3
|
+
/file_content.rb/1.1.1.1/Tue Dec 07 12:02:41 2010//
|
4
|
+
/haml_view.rb/1.1.1.1/Tue Dec 07 12:02:41 2010//
|
5
|
+
/io_view.rb/1.1.1.1/Tue Dec 07 12:02:41 2010//
|
6
|
+
/poi_view.rb/1.1.1.1/Tue Dec 07 12:02:41 2010//
|
7
|
+
/renderable.rb/1.1.1.1/Tue Dec 07 12:02:41 2010//
|
8
|
+
/simple_view.rb/1.1.1.1/Tue Dec 07 12:02:41 2010//
|
9
|
+
/smartxls.rb/1.1.1.1/Tue Dec 07 12:02:41 2010//
|
10
|
+
/version.rb/1.1.1.1/Tue Dec 07 12:02:41 2010//
|
11
|
+
D/java////
|
@@ -0,0 +1 @@
|
|
1
|
+
simple_view/lib/simple_view
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'builder'
|
2
|
+
|
3
|
+
module SimpleView
|
4
|
+
|
5
|
+
class SimpleViewBuilder < SimpleViewBase
|
6
|
+
|
7
|
+
EXTENTION = ".builder.rb".freeze unless defined?(EXTENTION)
|
8
|
+
|
9
|
+
def self.extension
|
10
|
+
EXTENTION
|
11
|
+
end
|
12
|
+
|
13
|
+
SimpleViewBase.register(self)
|
14
|
+
|
15
|
+
def do_rendering(rendable_object, options)
|
16
|
+
options = {:indent => 2}.merge(options)
|
17
|
+
filename = options.delete(:filename) || '<BUILDER>'
|
18
|
+
line = options.delete(:line) || 1
|
19
|
+
xml = ::Builder::XmlMarkup.new(options)
|
20
|
+
rendable_object.put_locals_objects((options.delete(:builder_name) || :xml).to_sym => xml)
|
21
|
+
render_with_helper(rendable_object) do
|
22
|
+
eval self.template_content, rendable_object.get_binding, filename, line
|
23
|
+
end
|
24
|
+
xml.target!
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
module Renderable
|
31
|
+
|
32
|
+
module InstanceMethods
|
33
|
+
|
34
|
+
def render_builder(template, options = {})
|
35
|
+
render_with SimpleViewBuilder, template, options
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'erb'
|
2
|
+
|
3
|
+
|
4
|
+
module SimpleView
|
5
|
+
|
6
|
+
class SimpleViewERB < SimpleViewBase
|
7
|
+
EXTENTION = ".erb".freeze unless defined?(EXTENTION)
|
8
|
+
|
9
|
+
def self.extension
|
10
|
+
EXTENTION
|
11
|
+
end
|
12
|
+
|
13
|
+
SimpleViewBase.register(self)
|
14
|
+
|
15
|
+
def erb
|
16
|
+
unless @erb
|
17
|
+
@erb = ERB.new(self.template_content, 0, '<%%>')
|
18
|
+
@erb.filename = self.file_template
|
19
|
+
end
|
20
|
+
@erb
|
21
|
+
end
|
22
|
+
|
23
|
+
def do_rendering(rendable_object, options)
|
24
|
+
render_with_helper(rendable_object) do
|
25
|
+
res = erb.result(rendable_object.get_binding)
|
26
|
+
options[:target] << res if options[:target]
|
27
|
+
res
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
module Renderable
|
33
|
+
|
34
|
+
module InstanceMethods
|
35
|
+
|
36
|
+
def render_erb(template, options = {})
|
37
|
+
render_with SimpleViewERB, template, options
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module SimpleView
|
2
|
+
class FileContent
|
3
|
+
|
4
|
+
NO_READ = :no_read
|
5
|
+
|
6
|
+
attr_accessor :file, :last_modification
|
7
|
+
|
8
|
+
def initialize(file)
|
9
|
+
self.file = file
|
10
|
+
self.last_modification = File.mtime(self.file)
|
11
|
+
end
|
12
|
+
|
13
|
+
def content
|
14
|
+
if changed? || @content == NO_READ
|
15
|
+
@content = File.read(self.file)
|
16
|
+
self.last_modification = File.mtime(self.file)
|
17
|
+
end
|
18
|
+
@content
|
19
|
+
end
|
20
|
+
|
21
|
+
def changed?
|
22
|
+
@content.nil? || (File.mtime(self.file) > self.last_modification)
|
23
|
+
end
|
24
|
+
|
25
|
+
def file(set_content_no_read = false)
|
26
|
+
if set_content_no_read
|
27
|
+
@content = NO_READ
|
28
|
+
end
|
29
|
+
@file
|
30
|
+
end
|
31
|
+
|
32
|
+
class << self
|
33
|
+
|
34
|
+
def files
|
35
|
+
@files ||= {}
|
36
|
+
end
|
37
|
+
|
38
|
+
def file(file)
|
39
|
+
return nil unless file
|
40
|
+
self.files[file] ||= self.new(file)
|
41
|
+
end
|
42
|
+
|
43
|
+
def changed?(file)
|
44
|
+
self.file(file).changed?
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module SimpleView
|
2
|
+
|
3
|
+
class SimpleViewIO < SimpleViewBase
|
4
|
+
EXTENTION = ".io.rb".freeze unless defined?(EXTENTION)
|
5
|
+
|
6
|
+
def self.extension
|
7
|
+
EXTENTION
|
8
|
+
end
|
9
|
+
|
10
|
+
SimpleViewBase.register(self)
|
11
|
+
|
12
|
+
def do_rendering(rendable_object, options)
|
13
|
+
options = {:target => $stdout}.merge(options)
|
14
|
+
filename = options.delete(:filename) || '<IO>'
|
15
|
+
line = options.delete(:line) || 1
|
16
|
+
io = options[:target]
|
17
|
+
rendable_object.put_locals_objects((options.delete(:io_name) || :io).to_sym => io)
|
18
|
+
render_with_helper(rendable_object) do
|
19
|
+
eval self.template_content, rendable_object.get_binding, filename, line
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
module Renderable
|
26
|
+
|
27
|
+
module InstanceMethods
|
28
|
+
|
29
|
+
def render_io(template, options = {})
|
30
|
+
render_with SimpleViewIO, template, options
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'java'
|
2
|
+
Dir["#{File.dirname(__FILE__)}/java/poi/*.jar"].each {|jar| require jar}
|
3
|
+
|
4
|
+
import org.apache.poi.poifs.filesystem.POIFSFileSystem
|
5
|
+
import org.apache.poi.hssf.usermodel.HSSFWorkbook
|
6
|
+
import org.apache.poi.hssf.usermodel.HSSFChart
|
7
|
+
import java.io.FileInputStream
|
8
|
+
import java.io.FileOutputStream
|
9
|
+
|
10
|
+
# D�clarer des s�ries Excel dynamique :
|
11
|
+
# 1. D�finir les variables
|
12
|
+
# Poids=DECALER(data!$K$1;0;0;NBVAL(data!$K:$K)-1;1)
|
13
|
+
# Signatures=DECALER(data!$B$1;0;0;NBVAL(data!$B:$B)-1;1)
|
14
|
+
# NbDossiers=DECALER(data!$J$1;0;0;NBVAL(data!$J:$J)-1;1)
|
15
|
+
|
16
|
+
# NbDossiersD=DECALER(data!$L$1;0;0;NBVAL(data!$L:$L)-1;1)
|
17
|
+
# NbDossiersE=DECALER(data!$M$1;0;0;NBVAL(data!$M:$M)-1;1)
|
18
|
+
# NbDossiersF=DECALER(data!$N$1;0;0;NBVAL(data!$N:$N)-1;1)
|
19
|
+
# NbDossiersH=DECALER(data!$O$1;0;0;NBVAL(data!$O:$O)-1;1)
|
20
|
+
# NbDossiersI=DECALER(data!$P$1;0;0;NBVAL(data!$P:$P)-1;1)
|
21
|
+
# NbDossiersP=DECALER(data!$Q$1;0;0;NBVAL(data!$Q:$Q)-1;1)
|
22
|
+
# NbDossiersR=DECALER(data!$R$1;0;0;NBVAL(data!$R:$R)-1;1)
|
23
|
+
# NbDossiersX=DECALER(data!$S$1;0;0;NBVAL(data!$S:$S)-1;1)
|
24
|
+
|
25
|
+
# 2. Dans les graphes
|
26
|
+
# S�rie: =data!Poids
|
27
|
+
|
28
|
+
module SimpleView
|
29
|
+
|
30
|
+
class SimpleViewPOI < SimpleViewBase
|
31
|
+
|
32
|
+
EXTENTION = ".poi.rb".freeze unless defined?(EXTENTION)
|
33
|
+
|
34
|
+
def self.extension
|
35
|
+
EXTENTION
|
36
|
+
end
|
37
|
+
|
38
|
+
SimpleViewBase.register(self)
|
39
|
+
|
40
|
+
def render(rendable_object, options = {})
|
41
|
+
do_rendering(rendable_object, options)
|
42
|
+
end
|
43
|
+
|
44
|
+
def do_rendering(rendable_object, options)
|
45
|
+
filename = options.delete(:filename) || '<POI.XLS>'
|
46
|
+
line = options.delete(:line) || 1
|
47
|
+
model_file = options.delete(:model)
|
48
|
+
|
49
|
+
xls = model_file ? HSSFWorkbook.new(file(model_file)) : HSSFWorkbook.new
|
50
|
+
|
51
|
+
rendable_object.put_locals_objects((options.delete(:builder_name) || :xls).to_sym => xls)
|
52
|
+
render_with_helper(rendable_object) do
|
53
|
+
rendable_object.extend(Helper)
|
54
|
+
eval self.template_content, rendable_object.get_binding, filename, line
|
55
|
+
end
|
56
|
+
if options.key?(:target)
|
57
|
+
output = file(options[:target], 'w')
|
58
|
+
begin
|
59
|
+
xls.write(output)
|
60
|
+
ensure
|
61
|
+
output.close
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def file(filename, mode = 'r')
|
67
|
+
if mode == 'r'
|
68
|
+
POIFSFileSystem.new(FileInputStream.new(filename))
|
69
|
+
else
|
70
|
+
FileOutputStream.new(filename)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
module Helper
|
75
|
+
def set_cell_value(row, col_index, value)
|
76
|
+
cell = row.create_cell(col_index)
|
77
|
+
cell.set_cell_value(value)
|
78
|
+
cell
|
79
|
+
end
|
80
|
+
|
81
|
+
def get_charts(sheet)
|
82
|
+
HSSFChart.get_sheet_charts(sheet)
|
83
|
+
end
|
84
|
+
|
85
|
+
def row_at(sheet, index_line)
|
86
|
+
row = sheet.get_row(index_line)
|
87
|
+
unless row
|
88
|
+
row = sheet.create_row(index_line)
|
89
|
+
end
|
90
|
+
row
|
91
|
+
end
|
92
|
+
|
93
|
+
def cell_at(row, index_col)
|
94
|
+
cell = row.get_cell(index_col)
|
95
|
+
unless cell
|
96
|
+
cell = row.create_cell(index_col)
|
97
|
+
end
|
98
|
+
cell
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
module Renderable
|
105
|
+
|
106
|
+
module InstanceMethods
|
107
|
+
|
108
|
+
def render_poi(template, options = {})
|
109
|
+
render_with SimpleViewPOI, template, options
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
#
|
2
|
+
# class Toto
|
3
|
+
# include Renderable
|
4
|
+
#
|
5
|
+
# attr_accessor :affectations
|
6
|
+
#
|
7
|
+
# end
|
8
|
+
#
|
9
|
+
# toto = Toto.new
|
10
|
+
# toto.affectations = [1,2,3,4]
|
11
|
+
# out = StringIO.new
|
12
|
+
#
|
13
|
+
# toto.render_erb('test', :titi => [:a, :b, :c])
|
14
|
+
#
|
15
|
+
# Le fichier 'views/test.erb'
|
16
|
+
# ---------------------------
|
17
|
+
# affectations = <%= affectations.inspect %>
|
18
|
+
# titi = <%= titi.inspect %>
|
19
|
+
#
|
20
|
+
# toto.render_builder('test', :titi => [:a, :b, :c])
|
21
|
+
#
|
22
|
+
# Le fichier 'views/test.builder.rb'
|
23
|
+
# ----------------------------------
|
24
|
+
# xml.instruct!
|
25
|
+
# affectation.each {|aff| xml.tag!(aff)}
|
26
|
+
# titi.each {|t| xml.tag!(t)}
|
27
|
+
#
|
28
|
+
#
|
29
|
+
module SimpleView
|
30
|
+
module Renderable
|
31
|
+
|
32
|
+
def self.included(mod)
|
33
|
+
if Class === mod
|
34
|
+
mod.send(:include, InstanceMethods)
|
35
|
+
mod.send(:extend, ClassMethods)
|
36
|
+
elsif Module === mod
|
37
|
+
mod.send(:extend, InstanceMethods)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
module ClassMethods
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
module InstanceMethods
|
46
|
+
|
47
|
+
def _locals_objects
|
48
|
+
@_locals_objects ||= {}
|
49
|
+
end
|
50
|
+
|
51
|
+
def put_locals_objects(locals)
|
52
|
+
self._locals_objects.merge!(locals)
|
53
|
+
locals.each_pair do |name, obj|
|
54
|
+
self.instance_eval <<-RUBY
|
55
|
+
def #{name}; self._locals_objects[:#{name}]; end
|
56
|
+
RUBY
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def get_binding
|
61
|
+
binding
|
62
|
+
end
|
63
|
+
|
64
|
+
def render(template, options = {})
|
65
|
+
self.safe_rendering do |object|
|
66
|
+
object.put_locals_objects(options[:locals] || {})
|
67
|
+
view = SimpleViewBase.find_view(template)
|
68
|
+
view.render(object, options)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def render_with(renderer, template, options = {})
|
73
|
+
self.safe_rendering do |object|
|
74
|
+
object.put_locals_objects(options[:locals] || {})
|
75
|
+
view = renderer.view(template)
|
76
|
+
view.render(object, options)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
protected
|
81
|
+
def safe_rendering #:nodoc:
|
82
|
+
shot = RenderingObject === self ? BasicObjectRenderable.new : RenderingObject.new(self)
|
83
|
+
yield(shot) if block_given?
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
class BasicObjectRenderable
|
91
|
+
include ::SimpleView::Renderable
|
92
|
+
end
|
93
|
+
|
94
|
+
class RenderingObject < SimpleDelegator #:nodoc:
|
95
|
+
include ::SimpleView::Renderable
|
96
|
+
|
97
|
+
def initialize(n)
|
98
|
+
super
|
99
|
+
# puts "RenderingObject for: #{n.inspect}"
|
100
|
+
end
|
101
|
+
|
102
|
+
def to_s
|
103
|
+
"RenderingObject(#{__getobj__}){:locals => #{_locals_objects.inspect}}"
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
# def self.render(template, options = {})
|
109
|
+
# BasicObjectRenderable.new.render(template, options)
|
110
|
+
# end
|
111
|
+
|
112
|
+
|
113
|
+
include Renderable
|
114
|
+
end
|