# File lib/math_ml/latex.rb, line 836 836: def add_environment(*a) 837: @environments = Hash.new unless @environments 838: if a.size==1 && Hash===a[0] 839: @environments.merge!(hash) 840: else 841: a.each{|i| @environments[i] = false} 842: end 843: end
# File lib/math_ml/latex.rb, line 845 845: def grp_begin 846: matched = @scanner.matched 847: begin_pos = @scanner.pos-matched.size 848: en = @scanner.scan_block ? @scanner[1] : @scanner.scan_any 849: raise ParseError.new('Environment name not exist.') unless en 850: 851: macro = @macro.environments(en) 852: if macro 853: begin 854: flg = @expanded_environment.include?(en) 855: @expanded_environment.push(en) 856: raise CircularReferenceEnvironment if flg 857: 858: pos = @scanner.pos 859: option = (macro.option && @scanner.scan_option) ? @scanner[1] : nil 860: params = Array.new 861: (1..macro.num).each do 862: params << (@scanner.scan_block ? @scanner[1] : @scanner.scan_any) 863: raise ParseError.new("Need more parameter.") unless params.last 864: end 865: body = "" 866: grpnest = 0 867: until @scanner.peek_command=="end" && grpnest==0 868: if @scanner.eos? 869: @scanner.pos = pos 870: raise ParseError.new('Matching \end not exist.') 871: end 872: com = @scanner.peek_command 873: grpnest += 1 if @group_begins.has_key?(com) 874: grpnest -=1 if @group_ends.has_key?(com) && @group_begins[com] 875: raise ParseError.new("Syntax error.") if grpnest<0 876: 877: body << @scanner.scan_any(true) 878: end 879: @scanner.scan_command 880: raise ParseError.new("Environment mismatched.", @scanner.matched) unless en==(@scanner.scan_block ? @scanner[1] : @scanner.scan_any) 881: begin 882: return parse_into(@macro.expand_environment(en, body, params, option), Array.new) 883: rescue CircularReferenceEnvironment 884: if @expanded_environment.size>1 885: raise 886: else 887: @scanner.pos = begin_pos 888: raise ParseError.new("Circular reference.") 889: end 890: rescue ParseError => e 891: if @expanded_environment.size>1 892: raise 893: else 894: @scanner.pos = begin_pos 895: raise ParseError.new(%[Error in macro(#{e.message} "#{e.rest.strip}").]) 896: end 897: end 898: ensure 899: @expanded_environment.pop 900: end 901: end 902: 903: raise ParseError.new("Undefined environment.") unless @environments.has_key?(en) 904: e = @environments[en] 905: e = en unless e # default method name 906: __send__("env_#{e.to_s}") 907: end
# File lib/math_ml/latex.rb, line 909 909: def grp_left_etc 910: right = 911: case @scanner[1] 912: when "left" 913: "right" 914: when "bigg" 915: "bigg" 916: end 917: 918: f = Fenced.new 919: p = @scanner.pos 920: o = @scanner.scan_any 921: raise ParseError.new('Need brace here.') unless o && (o=~RE::BRACES || @delimiters.include?(o[RE::COMMANDS, 1])) 922: f.open = (o=~RE::BRACES ? o : parse_symbol_command(o[RE::COMMANDS, 1], true)) 923: f << push_container(Row.new) do |r| 924: until @scanner.peek_command==right 925: if @scanner.eos? 926: @scanner.pos = p 927: raise ParseError.new('Brace not closed.') 928: end 929: r << parse_to_element(true) 930: end 931: end 932: @scanner.scan_command # skip right 933: c = @scanner.scan_any 934: raise ParseError.new('Need brace here.') unless c=~RE::BRACES || @delimiters.include?(c[RE::COMMANDS, 1]) 935: f.close = (c=~RE::BRACES ? c : parse_symbol_command(c[RE::COMMANDS, 1], true)) 936: f 937: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.