Initial Revision
[ohcount] / ext / ohcount_native / glots / html_polyglot.rb
1 require 'polyglot'
2
3 module Ohcount
4         class HtmlPolyglot < Polyglot
5
6                 def initialize(name, javascript, css)
7                         html = XmlMonoglot.new("html")
8
9                         @name = name
10
11                         @states = javascript.states + css.states
12                         @extra_states = html.states
13
14                         @transitions = javascript.transitions + css.transitions
15                         @extra_transitions = html.transitions
16
17                         # stitch css
18                         @extra_transitions << StitchTransition.new("<(?i)style(?-i)[^>]*(?i)css(?-i)[^>]*>", :html_markup, :css_code, :from, false, name)
19                         @extra_transitions << StitchTransition.new("</(?i)style(?-i)>", :css_code, :return, :to, false, name)
20                         @extra_transitions << StitchTransition.new("<(?i)script(?-i)\\\\ [^>]*(?i)javascript(?-i)[^>]*>", :html_markup, :javascript_code, :from, false, name)
21                         @extra_transitions << StitchTransition.new("</(?i)script(?-i)>", :javascript_code, :return, :to, false, name)
22                 end
23         end
24 end