annotate .svn/pristine/fe/fe0465ebb05e92c484a2edd16cfdf129d7d41205.svn-base @ 1080:5bd8c86cfa6a
issue_540
Makes the Publication model act as an activity; overloading the default ActivitiesController#index view in the Bibliography Plugin in order to differentiate Publications from the other event types.
* Known issues:
** route to /activities is not working (only to /activity);
** publication cache needs to be implemented in the model, not in the helper;
** when a publication is added to n projects, n events are created (all with the same content).
author |
luisf <luis.figueira@eecs.qmul.ac.uk> |
date |
Thu, 22 Nov 2012 16:51:23 +0000 |
parents |
cbb26bc654de |
children |
|
rev |
line source |
Chris@909
|
1 module CodeRay
|
Chris@909
|
2 module Scanners
|
Chris@909
|
3
|
Chris@909
|
4 load :html
|
Chris@909
|
5 load :ruby
|
Chris@909
|
6
|
Chris@909
|
7 # Scanner for HTML ERB templates.
|
Chris@909
|
8 class ERB < Scanner
|
Chris@909
|
9
|
Chris@909
|
10 register_for :erb
|
Chris@909
|
11 title 'HTML ERB Template'
|
Chris@909
|
12
|
Chris@909
|
13 KINDS_NOT_LOC = HTML::KINDS_NOT_LOC
|
Chris@909
|
14
|
Chris@909
|
15 ERB_RUBY_BLOCK = /
|
Chris@909
|
16 (<%(?!%)[-=\#]?)
|
Chris@909
|
17 ((?>
|
Chris@909
|
18 [^\-%]* # normal*
|
Chris@909
|
19 (?> # special
|
Chris@909
|
20 (?: %(?!>) | -(?!%>) )
|
Chris@909
|
21 [^\-%]* # normal*
|
Chris@909
|
22 )*
|
Chris@909
|
23 ))
|
Chris@909
|
24 ((?: -?%> )?)
|
Chris@909
|
25 /x # :nodoc:
|
Chris@909
|
26
|
Chris@909
|
27 START_OF_ERB = /
|
Chris@909
|
28 <%(?!%)
|
Chris@909
|
29 /x # :nodoc:
|
Chris@909
|
30
|
Chris@909
|
31 protected
|
Chris@909
|
32
|
Chris@909
|
33 def setup
|
Chris@909
|
34 @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true
|
Chris@909
|
35 @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true
|
Chris@909
|
36 end
|
Chris@909
|
37
|
Chris@909
|
38 def reset_instance
|
Chris@909
|
39 super
|
Chris@909
|
40 @html_scanner.reset
|
Chris@909
|
41 end
|
Chris@909
|
42
|
Chris@909
|
43 def scan_tokens encoder, options
|
Chris@909
|
44
|
Chris@909
|
45 until eos?
|
Chris@909
|
46
|
Chris@909
|
47 if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_rest) and not match.empty?
|
Chris@909
|
48 @html_scanner.tokenize match, :tokens => encoder
|
Chris@909
|
49
|
Chris@909
|
50 elsif match = scan(/#{ERB_RUBY_BLOCK}/o)
|
Chris@909
|
51 start_tag = self[1]
|
Chris@909
|
52 code = self[2]
|
Chris@909
|
53 end_tag = self[3]
|
Chris@909
|
54
|
Chris@909
|
55 encoder.begin_group :inline
|
Chris@909
|
56 encoder.text_token start_tag, :inline_delimiter
|
Chris@909
|
57
|
Chris@909
|
58 if start_tag == '<%#'
|
Chris@909
|
59 encoder.text_token code, :comment
|
Chris@909
|
60 else
|
Chris@909
|
61 @ruby_scanner.tokenize code, :tokens => encoder
|
Chris@909
|
62 end unless code.empty?
|
Chris@909
|
63
|
Chris@909
|
64 encoder.text_token end_tag, :inline_delimiter unless end_tag.empty?
|
Chris@909
|
65 encoder.end_group :inline
|
Chris@909
|
66
|
Chris@909
|
67 else
|
Chris@909
|
68 raise_inspect 'else-case reached!', encoder
|
Chris@909
|
69
|
Chris@909
|
70 end
|
Chris@909
|
71
|
Chris@909
|
72 end
|
Chris@909
|
73
|
Chris@909
|
74 encoder
|
Chris@909
|
75
|
Chris@909
|
76 end
|
Chris@909
|
77
|
Chris@909
|
78 end
|
Chris@909
|
79
|
Chris@909
|
80 end
|
Chris@909
|
81 end
|