rouge 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -0
- data/lib/rouge/cli.rb +15 -0
- data/lib/rouge/demos/matlab +6 -0
- data/lib/rouge/demos/ocaml +12 -0
- data/lib/rouge/demos/scala +3 -0
- data/lib/rouge/demos/sml +4 -0
- data/lib/rouge/demos/vb +4 -0
- data/lib/rouge/formatters/html.rb +13 -17
- data/lib/rouge/formatters/terminal256.rb +2 -2
- data/lib/rouge/lexer.rb +12 -14
- data/lib/rouge/lexers/coffeescript.rb +2 -4
- data/lib/rouge/lexers/common_lisp.rb +2 -4
- data/lib/rouge/lexers/erlang.rb +4 -13
- data/lib/rouge/lexers/factor.rb +25 -24
- data/lib/rouge/lexers/gherkin.rb +6 -6
- data/lib/rouge/lexers/groovy.rb +1 -2
- data/lib/rouge/lexers/haml.rb +2 -2
- data/lib/rouge/lexers/haskell.rb +18 -20
- data/lib/rouge/lexers/http.rb +13 -12
- data/lib/rouge/lexers/ini.rb +1 -2
- data/lib/rouge/lexers/java.rb +1 -2
- data/lib/rouge/lexers/lua.rb +1 -1
- data/lib/rouge/lexers/make.rb +4 -5
- data/lib/rouge/lexers/markdown.rb +4 -12
- data/lib/rouge/lexers/matlab.rb +71 -0
- data/lib/rouge/lexers/matlab/builtins.rb +10 -0
- data/lib/rouge/lexers/nginx.rb +3 -4
- data/lib/rouge/lexers/objective_c.rb +1 -1
- data/lib/rouge/lexers/ocaml.rb +109 -0
- data/lib/rouge/lexers/perl.rb +2 -5
- data/lib/rouge/lexers/php.rb +5 -5
- data/lib/rouge/lexers/php/builtins.rb +4 -2
- data/lib/rouge/lexers/puppet.rb +1 -2
- data/lib/rouge/lexers/python.rb +5 -11
- data/lib/rouge/lexers/racket.rb +1 -3
- data/lib/rouge/lexers/ruby.rb +8 -8
- data/lib/rouge/lexers/rust.rb +3 -3
- data/lib/rouge/lexers/sass/common.rb +4 -4
- data/lib/rouge/lexers/scala.rb +141 -0
- data/lib/rouge/lexers/scheme.rb +1 -3
- data/lib/rouge/lexers/sed.rb +4 -4
- data/lib/rouge/lexers/shell.rb +1 -2
- data/lib/rouge/lexers/smalltalk.rb +6 -7
- data/lib/rouge/lexers/sml.rb +236 -6
- data/lib/rouge/lexers/tex.rb +1 -4
- data/lib/rouge/lexers/toml.rb +1 -2
- data/lib/rouge/lexers/vb.rb +162 -0
- data/lib/rouge/lexers/viml.rb +1 -1
- data/lib/rouge/lexers/yaml.rb +10 -11
- data/lib/rouge/regex_lexer.rb +77 -92
- data/lib/rouge/token.rb +3 -3
- data/lib/rouge/util.rb +4 -4
- data/lib/rouge/version.rb +1 -1
- metadata +13 -4
@@ -40,12 +40,14 @@ module Rouge
|
|
40
40
|
b["Exif"] = Set.new %w(exif_imagetype exif_imagetype exif_read_data exif_tagname exif_thumbnail read_exif_data exif_imagetype)
|
41
41
|
b["Expect"] = Set.new %w(expect_expectl expect_expectl expect_popen expect_expectl)
|
42
42
|
b["FAM"] = Set.new %w(fam_cancel_monitor fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor fam_cancel_monitor)
|
43
|
+
b["Fann"] = Set.new %w(fann_cascadetrain_on_data fann_cascadetrain_on_data fann_cascadetrain_on_file fann_clear_scaling_params fann_copy fann_create_from_file fann_create_shortcut_array fann_create_shortcut fann_create_sparse_array fann_create_sparse fann_create_standard_array fann_create_standard fann_create_train_from_callback fann_create_train fann_descale_input fann_descale_output fann_descale_train fann_destroy_train fann_destroy fann_duplicate_train_data fann_get_activation_function fann_get_activation_steepness fann_get_bias_array fann_get_bit_fail_limit fann_get_bit_fail fann_get_cascade_activation_functions_count fann_get_cascade_activation_functions fann_get_cascade_activation_steepnesses_count fann_get_cascade_activation_steepnesses fann_get_cascade_candidate_change_fraction fann_get_cascade_candidate_limit fann_get_cascade_candidate_stagnation_epochs fann_get_cascade_max_cand_epochs fann_get_cascade_max_out_epochs fann_get_cascade_min_cand_epochs fann_get_cascade_min_out_epochs fann_get_cascade_num_candidate_groups fann_get_cascade_num_candidates fann_get_cascade_output_change_fraction fann_get_cascade_output_stagnation_epochs fann_get_cascade_weight_multiplier fann_get_connection_array fann_get_connection_rate fann_get_errno fann_get_errstr fann_get_layer_array fann_get_learning_momentum fann_get_learning_rate fann_get_MSE fann_get_network_type fann_get_num_input fann_get_num_layers fann_get_num_output fann_get_quickprop_decay fann_get_quickprop_mu fann_get_rprop_decrease_factor fann_get_rprop_delta_max fann_get_rprop_delta_min fann_get_rprop_delta_zero fann_get_rprop_increase_factor fann_get_sarprop_step_error_shift fann_get_sarprop_step_error_threshold_factor fann_get_sarprop_temperature fann_get_sarprop_weight_decay_shift fann_get_total_connections fann_get_total_neurons fann_get_train_error_function fann_get_train_stop_function fann_get_training_algorithm fann_init_weights fann_length_train_data fann_merge_train_data fann_num_input_train_data fann_num_output_train_data fann_print_error fann_randomize_weights fann_read_train_from_file fann_reset_errno fann_reset_errstr fann_reset_MSE fann_run fann_save_train fann_save fann_scale_input_train_data fann_scale_input fann_scale_output_train_data fann_scale_output fann_scale_train_data fann_scale_train fann_set_activation_function_hidden fann_set_activation_function_layer fann_set_activation_function_output fann_set_activation_function fann_set_activation_steepness_hidden fann_set_activation_steepness_layer fann_set_activation_steepness_output fann_set_activation_steepness fann_set_bit_fail_limit fann_set_callback fann_set_cascade_activation_functions fann_set_cascade_activation_steepnesses fann_set_cascade_candidate_change_fraction fann_set_cascade_candidate_limit fann_set_cascade_candidate_stagnation_epochs fann_set_cascade_max_cand_epochs fann_set_cascade_max_out_epochs fann_set_cascade_min_cand_epochs fann_set_cascade_min_out_epochs fann_set_cascade_num_candidate_groups fann_set_cascade_output_change_fraction fann_set_cascade_output_stagnation_epochs fann_set_cascade_weight_multiplier fann_set_error_log fann_set_input_scaling_params fann_set_learning_momentum fann_set_learning_rate fann_set_output_scaling_params fann_set_quickprop_decay fann_set_quickprop_mu fann_set_rprop_decrease_factor fann_set_rprop_delta_max fann_set_rprop_delta_min fann_set_rprop_delta_zero fann_set_rprop_increase_factor fann_set_sarprop_step_error_shift fann_set_sarprop_step_error_threshold_factor fann_set_sarprop_temperature fann_set_sarprop_weight_decay_shift fann_set_scaling_params fann_set_train_error_function fann_set_train_stop_function fann_set_training_algorithm fann_set_weight_array fann_set_weight fann_shuffle_train_data fann_subset_train_data fann_test_data fann_test fann_train_epoch fann_train_on_data fann_train_on_file fann_train fann_cascadetrain_on_data)
|
43
44
|
b["FrontBase"] = Set.new %w(fbsql_affected_rows fbsql_affected_rows fbsql_autocommit fbsql_blob_size fbsql_change_user fbsql_clob_size fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_rows_fetched fbsql_select_db fbsql_set_characterset fbsql_set_lob_mode fbsql_set_password fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_table_name fbsql_tablename fbsql_username fbsql_warnings fbsql_affected_rows)
|
44
45
|
b["FDF"] = Set.new %w(fdf_add_doc_javascript fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_on_import_javascript fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version fdf_add_doc_javascript)
|
45
46
|
b["Fileinfo"] = Set.new %w(finfo_buffer finfo_buffer finfo_close finfo_file finfo_open finfo_set_flags mime_content_type finfo_buffer)
|
46
47
|
b["filePro"] = Set.new %w(filepro_fieldcount filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro filepro_fieldcount)
|
47
48
|
b["Filesystem"] = Set.new %w(basename basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputcsv fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable lchgrp lchown link linkinfo lstat mkdir move_uploaded_file parse_ini_file parse_ini_string pathinfo pclose popen readfile readlink realpath_cache_get realpath_cache_size realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink basename)
|
48
49
|
b["Filter"] = Set.new %w(filter_has_var filter_has_var filter_id filter_input_array filter_input filter_list filter_var_array filter_var filter_has_var)
|
50
|
+
b["FPM"] = Set.new %w(fastcgi_finish_request fastcgi_finish_request fastcgi_finish_request)
|
49
51
|
b["FriBiDi"] = Set.new %w(fribidi_log2vis fribidi_log2vis fribidi_log2vis)
|
50
52
|
b["FTP"] = Set.new %w(ftp_alloc ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype ftp_alloc)
|
51
53
|
b["Function handling"] = Set.new %w(call_user_func_array call_user_func_array call_user_func create_function forward_static_call_array forward_static_call func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function call_user_func_array)
|
@@ -113,8 +115,8 @@ module Rouge
|
|
113
115
|
b["NSAPI"] = Set.new %w(nsapi_request_headers nsapi_request_headers nsapi_response_headers nsapi_virtual nsapi_request_headers)
|
114
116
|
b["OAuth"] = Set.new %w(oauth_get_sbs oauth_get_sbs oauth_urlencode oauth_get_sbs)
|
115
117
|
b["Object Aggregation"] = Set.new %w(aggregate_info aggregate_info aggregate_methods_by_list aggregate_methods_by_regexp aggregate_methods aggregate_properties_by_list aggregate_properties_by_regexp aggregate_properties aggregate aggregation_info deaggregate aggregate_info)
|
116
|
-
b["OCI8"] = Set.new %w(oci_bind_array_by_name oci_bind_by_name oci_cancel oci_client_version oci_close oci_commit oci_connect oci_define_by_name oci_error oci_execute oci_fetch_all oci_fetch_array oci_fetch_assoc oci_fetch_object oci_fetch_row oci_fetch oci_field_is_null oci_field_name oci_field_precision oci_field_scale oci_field_size oci_field_type_raw oci_field_type oci_free_descriptor oci_free_statement oci_internal_debug oci_lob_copy oci_lob_is_equal oci_new_collection oci_new_connect oci_new_cursor oci_new_descriptor oci_num_fields oci_num_rows oci_parse oci_password_change oci_pconnect oci_result oci_rollback oci_server_version oci_set_action oci_set_client_identifier oci_set_client_info oci_set_edition oci_set_module_name oci_set_prefetch oci_statement_type)
|
117
|
-
b["OPcache"] = Set.new %w(
|
118
|
+
b["OCI8"] = Set.new %w(oci_bind_array_by_name oci_bind_array_by_name oci_bind_by_name oci_cancel oci_client_version oci_close oci_commit oci_connect oci_define_by_name oci_error oci_execute oci_fetch_all oci_fetch_array oci_fetch_assoc oci_fetch_object oci_fetch_row oci_fetch oci_field_is_null oci_field_name oci_field_precision oci_field_scale oci_field_size oci_field_type_raw oci_field_type oci_free_descriptor oci_free_statement oci_get_implicit_resultset oci_internal_debug oci_lob_copy oci_lob_is_equal oci_new_collection oci_new_connect oci_new_cursor oci_new_descriptor oci_num_fields oci_num_rows oci_parse oci_password_change oci_pconnect oci_result oci_rollback oci_server_version oci_set_action oci_set_client_identifier oci_set_client_info oci_set_edition oci_set_module_name oci_set_prefetch oci_statement_type oci_bind_array_by_name)
|
119
|
+
b["OPcache"] = Set.new %w(opcache_compile_file opcache_compile_file opcache_invalidate opcache_reset opcache_compile_file)
|
118
120
|
b["OpenAL"] = Set.new %w(openal_buffer_create openal_buffer_create openal_buffer_data openal_buffer_destroy openal_buffer_get openal_buffer_loadwav openal_context_create openal_context_current openal_context_destroy openal_context_process openal_context_suspend openal_device_close openal_device_open openal_listener_get openal_listener_set openal_source_create openal_source_destroy openal_source_get openal_source_pause openal_source_play openal_source_rewind openal_source_set openal_source_stop openal_stream openal_buffer_create)
|
119
121
|
b["OpenSSL"] = Set.new %w(openssl_cipher_iv_length openssl_cipher_iv_length openssl_csr_export_to_file openssl_csr_export openssl_csr_get_public_key openssl_csr_get_subject openssl_csr_new openssl_csr_sign openssl_decrypt openssl_dh_compute_key openssl_digest openssl_encrypt openssl_error_string openssl_free_key openssl_get_cipher_methods openssl_get_md_methods openssl_get_privatekey openssl_get_publickey openssl_open openssl_pbkdf2 openssl_pkcs12_export_to_file openssl_pkcs12_export openssl_pkcs12_read openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_free openssl_pkey_get_details openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_random_pseudo_bytes openssl_seal openssl_sign openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_free openssl_x509_parse openssl_x509_read openssl_cipher_iv_length)
|
120
122
|
b["Output Control"] = Set.new %w(flush flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars flush)
|
data/lib/rouge/lexers/puppet.rb
CHANGED
data/lib/rouge/lexers/python.rb
CHANGED
@@ -52,9 +52,7 @@ module Rouge
|
|
52
52
|
state :root do
|
53
53
|
rule /\n+/m, Text
|
54
54
|
rule /^(:)(\s*)([ru]{,2}""".*?""")/mi do
|
55
|
-
|
56
|
-
group Text
|
57
|
-
group Str::Doc
|
55
|
+
groups Punctuation, Text, Str::Doc
|
58
56
|
end
|
59
57
|
|
60
58
|
rule /[^\S\n]+/, Text
|
@@ -69,26 +67,22 @@ module Rouge
|
|
69
67
|
rule /(?:#{keywords.join('|')})\b/, Keyword
|
70
68
|
|
71
69
|
rule /(def)((?:\s|\\\s)+)/ do
|
72
|
-
|
73
|
-
group Text # whitespae
|
70
|
+
groups Keyword, Text
|
74
71
|
push :funcname
|
75
72
|
end
|
76
73
|
|
77
74
|
rule /(class)((?:\s|\\\s)+)/ do
|
78
|
-
|
79
|
-
group Text
|
75
|
+
groups Keyword, Text
|
80
76
|
push :classname
|
81
77
|
end
|
82
78
|
|
83
79
|
rule /(from)((?:\s|\\\s)+)/ do
|
84
|
-
|
85
|
-
group Text
|
80
|
+
groups Keyword::Namespace, Text
|
86
81
|
push :fromimport
|
87
82
|
end
|
88
83
|
|
89
84
|
rule /(import)((?:\s|\\\s)+)/ do
|
90
|
-
|
91
|
-
group Text
|
85
|
+
groups Keyword::Namespace, Text
|
92
86
|
push :import
|
93
87
|
end
|
94
88
|
|
data/lib/rouge/lexers/racket.rb
CHANGED
data/lib/rouge/lexers/ruby.rb
CHANGED
@@ -42,8 +42,8 @@ module Rouge
|
|
42
42
|
interp = /[rQWxI]/ === m[1]
|
43
43
|
toktype = Str::Other
|
44
44
|
|
45
|
-
|
46
|
-
|
45
|
+
puts " open: #{open.inspect}" if @debug
|
46
|
+
puts " close: #{close.inspect}" if @debug
|
47
47
|
|
48
48
|
# regexes
|
49
49
|
if m[1] == 'r'
|
@@ -241,17 +241,17 @@ module Rouge
|
|
241
241
|
tolerant, heredoc_name = @heredoc_queue.first
|
242
242
|
check = tolerant ? m[2].strip : m[2].rstrip
|
243
243
|
|
244
|
-
group Str::Heredoc
|
245
|
-
|
246
244
|
# check if we found the end of the heredoc
|
247
|
-
if check == heredoc_name
|
248
|
-
group Name::Constant
|
245
|
+
line_tok = if check == heredoc_name
|
249
246
|
@heredoc_queue.shift
|
250
247
|
# if there's no more, we're done looking.
|
251
248
|
pop! if @heredoc_queue.empty?
|
249
|
+
Name::Constant
|
252
250
|
else
|
253
|
-
|
251
|
+
Str::Heredoc
|
254
252
|
end
|
253
|
+
|
254
|
+
groups(Str::Heredoc, line_tok)
|
255
255
|
end
|
256
256
|
|
257
257
|
rule /[#\\\n]/, Str::Heredoc
|
@@ -269,7 +269,7 @@ module Rouge
|
|
269
269
|
<<? | >>? | <=>? | >= | ===?
|
270
270
|
)
|
271
271
|
)x do |m|
|
272
|
-
|
272
|
+
puts "matches: #{[m[0], m[1], m[2], m[3]].inspect}" if @debug
|
273
273
|
groups Name::Class, Operator, Name::Function
|
274
274
|
pop!
|
275
275
|
end
|
data/lib/rouge/lexers/rust.rb
CHANGED
@@ -87,7 +87,7 @@ module Rouge
|
|
87
87
|
rule /([.]\s*)?#{id}(?=\s*[(])/m, Name::Function
|
88
88
|
rule /[.]\s*#{id}/, Name::Property
|
89
89
|
rule /(#{id})(::)/m do
|
90
|
-
|
90
|
+
groups Name::Namespace, Punctuation
|
91
91
|
end
|
92
92
|
|
93
93
|
# macros
|
@@ -109,13 +109,13 @@ module Rouge
|
|
109
109
|
|
110
110
|
rule /[\[{(]/ do |m|
|
111
111
|
@macro_delims[delim_map[m[0]]] += 1
|
112
|
-
|
112
|
+
puts " macro_delims: #{@macro_delims.inspect}" if @debug
|
113
113
|
token Punctuation
|
114
114
|
end
|
115
115
|
|
116
116
|
rule /[\]})]/ do |m|
|
117
117
|
@macro_delims[m[0]] -= 1
|
118
|
-
|
118
|
+
puts " macro_delims: #{@macro_delims.inspect}" if @debug
|
119
119
|
pop! if macro_closed?
|
120
120
|
token Punctuation
|
121
121
|
end
|
@@ -8,14 +8,14 @@ module Rouge
|
|
8
8
|
rule /@for\b/, Keyword, :for
|
9
9
|
rule /@(debug|warn|if|while)/, Keyword, :value
|
10
10
|
rule /(@mixin)(\s+)(#{id})/ do
|
11
|
-
|
11
|
+
groups Keyword, Text, Name::Function
|
12
12
|
push :value
|
13
13
|
end
|
14
14
|
|
15
15
|
rule /@extend\b/, Keyword, :selector
|
16
16
|
|
17
17
|
rule /(@include)(\s+)(#{id})/ do
|
18
|
-
|
18
|
+
groups Keyword, Text, Name::Decorator
|
19
19
|
push :value
|
20
20
|
end
|
21
21
|
|
@@ -23,7 +23,7 @@ module Rouge
|
|
23
23
|
|
24
24
|
# $variable: assignment
|
25
25
|
rule /([$]#{id})([ \t]*)(:)/ do
|
26
|
-
|
26
|
+
groups Name::Variable, Text, Punctuation
|
27
27
|
push :value
|
28
28
|
end
|
29
29
|
end
|
@@ -157,7 +157,7 @@ module Rouge
|
|
157
157
|
mixin :attr_common
|
158
158
|
|
159
159
|
rule /([ \t]*)(:)/ do
|
160
|
-
|
160
|
+
groups Text, Punctuation
|
161
161
|
push :value
|
162
162
|
end
|
163
163
|
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
# -*- coding: utf-8 #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class Scala < RegexLexer
|
6
|
+
desc "The Scala programming language (scala-lang.org)"
|
7
|
+
tag 'scala'
|
8
|
+
aliases 'scala'
|
9
|
+
filenames '*.scala', '*.sbt'
|
10
|
+
|
11
|
+
mimetypes 'text/x-scala', 'application/x-scala'
|
12
|
+
|
13
|
+
# As documented in the ENBF section of the scala specification
|
14
|
+
# http://www.scala-lang.org/docu/files/ScalaReference.pdf
|
15
|
+
whitespace = /\p{Space}/
|
16
|
+
letter = /[\p{L}$_]/
|
17
|
+
upper = /[\p{Lu}$_]/
|
18
|
+
digits = /[0-9]/
|
19
|
+
parens = /[(){}\[\]]/
|
20
|
+
delims = %r([‘’".;,])
|
21
|
+
|
22
|
+
# negative lookahead to filter out other classes
|
23
|
+
op = %r(
|
24
|
+
(?!#{whitespace}|#{letter}|#{digits}|#{parens}|#{delims})
|
25
|
+
[\u0020-\u007F\p{Sm}\p{So}]
|
26
|
+
)x
|
27
|
+
|
28
|
+
idrest = %r(#{letter}(?:#{letter}|#{digits})*(?:(?<=_)#{op}+)?)x
|
29
|
+
|
30
|
+
keywords = %w(
|
31
|
+
abstract case catch def do else extends final finally for forSome
|
32
|
+
if implicit lazy match new override private protected requires return
|
33
|
+
sealed super this throw try val var while with yield
|
34
|
+
)
|
35
|
+
|
36
|
+
state :root do
|
37
|
+
rule /(class|trait|object)(\s+)/ do
|
38
|
+
groups Keyword, Text
|
39
|
+
push :class
|
40
|
+
end
|
41
|
+
rule /'#{idrest}[^']/, Str::Symbol
|
42
|
+
rule /[^\S\n]+/, Text
|
43
|
+
|
44
|
+
rule %r(//.*?\n), Comment::Single
|
45
|
+
rule %r(/\*), Comment::Multiline, :comment
|
46
|
+
|
47
|
+
rule /@#{idrest}/, Name::Decorator
|
48
|
+
rule %r(
|
49
|
+
(#{keywords.join("|")})\b|
|
50
|
+
(<[%:-]|=>|>:|[#=@_\u21D2\u2190])(\b|(?=\s)|$)
|
51
|
+
)x, Keyword
|
52
|
+
rule /:(?!#{op})/, Keyword, :type
|
53
|
+
rule /#{upper}#{idrest}\b/, Name::Class
|
54
|
+
rule /(true|false|null)\b/, Keyword::Constant
|
55
|
+
rule /(import|package)(\s+)/ do
|
56
|
+
groups Keyword, Text
|
57
|
+
push :import
|
58
|
+
end
|
59
|
+
|
60
|
+
rule /(type)(\s+)/ do
|
61
|
+
groups Keyword, Text
|
62
|
+
push :type
|
63
|
+
end
|
64
|
+
|
65
|
+
rule /""".*?"""(?!")/m, Str
|
66
|
+
rule /"(\\\\|\\"|[^"])*"/, Str
|
67
|
+
rule /'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'/, Str::Char
|
68
|
+
|
69
|
+
rule idrest, Name
|
70
|
+
rule /`[^`]+`/, Name
|
71
|
+
|
72
|
+
rule /\[/, Operator, :typeparam
|
73
|
+
rule /[\(\)\{\};,.#]/, Operator
|
74
|
+
rule /#{op}+/, Operator
|
75
|
+
|
76
|
+
rule /([0-9][0-9]*\.[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?[fFdD]?/, Num::Float
|
77
|
+
rule /([0-9][0-9]*[fFdD])/, Num::Float
|
78
|
+
rule /0x[0-9a-fA-F]+/, Num::Hex
|
79
|
+
rule /[0-9]+L?/, Num::Integer
|
80
|
+
rule /\n/, Text
|
81
|
+
end
|
82
|
+
|
83
|
+
state :class do
|
84
|
+
rule /(#{idrest}|#{op}+|`[^`]+`)(\s*)(\[)/ do
|
85
|
+
groups Name::Class, Text, Operator
|
86
|
+
push :typeparam
|
87
|
+
end
|
88
|
+
|
89
|
+
rule /\s+/, Text
|
90
|
+
rule /{/, Operator, :pop!
|
91
|
+
rule /\(/, Operator, :pop!
|
92
|
+
rule %r(//.*?\n), Comment::Single, :pop!
|
93
|
+
rule %r(#{idrest}|#{op}+|`[^`]+`), Name::Class, :pop!
|
94
|
+
end
|
95
|
+
|
96
|
+
state :type do
|
97
|
+
rule /\s+/, Text
|
98
|
+
rule /<[%:]|>:|[#_\u21D2]|forSome|type/, Keyword
|
99
|
+
rule /([,\);}]|=>|=)(\s*)/ do
|
100
|
+
groups Operator, Text
|
101
|
+
pop!
|
102
|
+
end
|
103
|
+
rule /[\(\{]/, Operator, :type
|
104
|
+
|
105
|
+
typechunk = /(?:#{idrest}|#{op}+\`[^`]+`)/
|
106
|
+
rule /(#{typechunk}(?:\.#{typechunk})*)(\s*)(\[)/ do
|
107
|
+
groups Keyword::Type, Text, Operator
|
108
|
+
pop!
|
109
|
+
push :typeparam
|
110
|
+
end
|
111
|
+
|
112
|
+
rule /(#{typechunk}(?:\.#{typechunk})*)(\s*)$/ do
|
113
|
+
groups Keyword::Type, Text
|
114
|
+
pop!
|
115
|
+
end
|
116
|
+
|
117
|
+
rule %r(//.*?\n), Comment::Single, :pop!
|
118
|
+
rule /\.|#{idrest}|#{op}+|`[^`]+`/, Keyword::Type
|
119
|
+
end
|
120
|
+
|
121
|
+
state :typeparam do
|
122
|
+
rule /[\s,]+/, Text
|
123
|
+
rule /<[%:]|=>|>:|[#_\u21D2]|forSome|type/, Keyword
|
124
|
+
rule /([\]\)\}])/, Operator, :pop!
|
125
|
+
rule /[\(\[\{]/, Operator, :typeparam
|
126
|
+
rule /\.|#{idrest}|#{op}+|`[^`]+`/, Keyword::Type
|
127
|
+
end
|
128
|
+
|
129
|
+
state :comment do
|
130
|
+
rule %r([^/\*]+), Comment::Multiline
|
131
|
+
rule %r(/\*), Comment::Multiline, :comment
|
132
|
+
rule %r(\*/), Comment::Multiline, :pop!
|
133
|
+
rule %r([*/]), Comment::Multiline
|
134
|
+
end
|
135
|
+
|
136
|
+
state :import do
|
137
|
+
rule %r((#{idrest}|\.)+), Name::Namespace, :pop!
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
data/lib/rouge/lexers/scheme.rb
CHANGED
data/lib/rouge/lexers/sed.rb
CHANGED
@@ -95,14 +95,14 @@ module Rouge
|
|
95
95
|
|
96
96
|
# commands that take a text segment as an argument
|
97
97
|
rule /([aic])(\s*)/ do
|
98
|
-
|
98
|
+
groups Keyword, Text; goto :text
|
99
99
|
end
|
100
100
|
|
101
101
|
rule /[pd]/, Keyword
|
102
102
|
|
103
103
|
# commands that take a number argument
|
104
104
|
rule /([qQl])(\s+)(\d+)/i do
|
105
|
-
|
105
|
+
groups Keyword, Text, Num
|
106
106
|
pop!
|
107
107
|
end
|
108
108
|
|
@@ -111,13 +111,13 @@ module Rouge
|
|
111
111
|
|
112
112
|
# commands that take a filename argument
|
113
113
|
rule /([rRwW])(\s+)(\S+)/ do
|
114
|
-
|
114
|
+
groups Keyword, Text, Name
|
115
115
|
pop!
|
116
116
|
end
|
117
117
|
|
118
118
|
# commands that take a label argument
|
119
119
|
rule /([:btT])(\s+)(\S+)/ do
|
120
|
-
|
120
|
+
groups Keyword, Text, Name::Label
|
121
121
|
pop!
|
122
122
|
end
|
123
123
|
end
|
data/lib/rouge/lexers/shell.rb
CHANGED
@@ -12,14 +12,14 @@ module Rouge
|
|
12
12
|
|
13
13
|
state :root do
|
14
14
|
rule /(<)(\w+:)(.*?)(>)/ do
|
15
|
-
|
15
|
+
groups Punctuation, Keyword, Text, Punctuation
|
16
16
|
end
|
17
17
|
|
18
18
|
# mixin :squeak_fileout
|
19
19
|
mixin :whitespaces
|
20
20
|
mixin :method_definition
|
21
21
|
rule /([|])([\w\s]*)([|])/ do
|
22
|
-
|
22
|
+
groups Punctuation, Name::Variable, Punctuation
|
23
23
|
end
|
24
24
|
mixin :objects
|
25
25
|
rule /\^|:=|_/, Operator
|
@@ -30,23 +30,22 @@ module Rouge
|
|
30
30
|
|
31
31
|
state :method_definition do
|
32
32
|
rule /([a-z]\w*:)(\s*)(\w+)/i do
|
33
|
-
|
33
|
+
groups Name::Function, Text, Name::Variable
|
34
34
|
end
|
35
35
|
|
36
36
|
rule /^(\s*)(\b[a-z]\w*\b)(\s*)$/i do
|
37
|
-
|
37
|
+
groups Text, Name::Function, Text
|
38
38
|
end
|
39
39
|
|
40
40
|
rule %r(^(\s*)(#{ops}+)(\s*)(\w+)(\s*)$) do
|
41
|
-
|
42
|
-
group Text; group Name::Variable; group Text;
|
41
|
+
groups Text, Name::Function, Text, Name::Variable, Text
|
43
42
|
end
|
44
43
|
end
|
45
44
|
|
46
45
|
state :block_variables do
|
47
46
|
mixin :whitespaces
|
48
47
|
rule /(:)(\s*)(\w+)/ do
|
49
|
-
|
48
|
+
groups Operator, Text, Name::Variable
|
50
49
|
end
|
51
50
|
|
52
51
|
rule /[|]/, Punctuation, :pop!
|
data/lib/rouge/lexers/sml.rb
CHANGED
@@ -18,7 +18,11 @@ module Rouge
|
|
18
18
|
)
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
def self.symbolic_reserved
|
22
|
+
@symbolic_reserved ||= Set.new %w(: | = => -> # :>)
|
23
|
+
end
|
24
|
+
|
25
|
+
id = /[\w']+/i
|
22
26
|
symbol = %r([!%&$#/:<=>?@\\~`^|*+-]+)
|
23
27
|
|
24
28
|
def self.analyze_text(text)
|
@@ -75,10 +79,11 @@ module Rouge
|
|
75
79
|
state :core do
|
76
80
|
rule /[()\[\]{},;_]|[.][.][.]/, Punctuation
|
77
81
|
rule /#"/, Str::Char, :char
|
82
|
+
rule /"/, Str::Double, :string
|
78
83
|
rule /~?0x[0-9a-fA-F]+/, Num::Hex
|
79
84
|
rule /0wx[0-9a-fA-F]+/, Num::Hex
|
80
85
|
rule /0w\d+/, Num::Integer
|
81
|
-
rule /~?\d+[.]\d+[eE]~?\d+/, Num::Float
|
86
|
+
rule /~?\d+([.]\d+)?[eE]~?\d+/, Num::Float
|
82
87
|
rule /~?\d+[.]\d+/, Num::Float
|
83
88
|
rule /~?\d+/, Num::Integer
|
84
89
|
|
@@ -98,10 +103,28 @@ module Rouge
|
|
98
103
|
push :dotted
|
99
104
|
end
|
100
105
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
106
|
+
rule id do |m|
|
107
|
+
token token_for_id(m[0])
|
108
|
+
end
|
109
|
+
|
110
|
+
rule symbol do |m|
|
111
|
+
token token_for_id(m[0])
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
state :dotted do
|
116
|
+
rule /(#{id})([.])/ do |m|
|
117
|
+
groups(token_for_id_with_dot(m[1]), Punctuation)
|
118
|
+
end
|
119
|
+
|
120
|
+
rule id do |m|
|
121
|
+
token token_for_id(m[0])
|
122
|
+
pop!
|
123
|
+
end
|
124
|
+
|
125
|
+
rule symbol do |m|
|
126
|
+
token token_for_id(m[0])
|
127
|
+
pop!
|
105
128
|
end
|
106
129
|
end
|
107
130
|
|
@@ -109,6 +132,213 @@ module Rouge
|
|
109
132
|
rule /#!.*?\n/, Comment::Preproc
|
110
133
|
rule(//) { push :main }
|
111
134
|
end
|
135
|
+
|
136
|
+
state :main do
|
137
|
+
mixin :whitespace
|
138
|
+
|
139
|
+
rule /\b(val|and)\b(?!')/, Keyword::Reserved, :vname
|
140
|
+
rule /\b(fun)\b(?!')/ do
|
141
|
+
token Keyword::Reserved
|
142
|
+
goto :main_fun
|
143
|
+
push :fname
|
144
|
+
end
|
145
|
+
|
146
|
+
mixin :delimiters
|
147
|
+
mixin :core
|
148
|
+
end
|
149
|
+
|
150
|
+
state :main_fun do
|
151
|
+
mixin :whitespace
|
152
|
+
rule /\b(fun|and)\b(?!')/, Keyword::Reserved, :fname
|
153
|
+
rule /\bval\b(?!')/ do
|
154
|
+
token Keyword::Reserved
|
155
|
+
goto :main
|
156
|
+
push :vname
|
157
|
+
end
|
158
|
+
|
159
|
+
rule /[|]/, Punctuation, :fname
|
160
|
+
rule /\b(case|handle)\b(?!')/ do
|
161
|
+
token Keyword::Reserved
|
162
|
+
goto :main
|
163
|
+
end
|
164
|
+
|
165
|
+
mixin :delimiters
|
166
|
+
mixin :core
|
167
|
+
end
|
168
|
+
|
169
|
+
state :has_escapes do
|
170
|
+
rule /\\[\\"abtnvfr]/, Str::Escape
|
171
|
+
rule /\\\^[\x40-\x5e]/, Str::Escape
|
172
|
+
rule /\\[0-9]{3}/, Str::Escape
|
173
|
+
rule /\\u\h{4}/, Str::Escape
|
174
|
+
rule /\\\s+\\/, Str::Interpol
|
175
|
+
end
|
176
|
+
|
177
|
+
state :string do
|
178
|
+
rule /[^"\\]+/, Str::Double
|
179
|
+
rule /"/, Str::Double, :pop!
|
180
|
+
mixin :has_escapes
|
181
|
+
end
|
182
|
+
|
183
|
+
state :char do
|
184
|
+
rule /[^"\\]+/, Str::Char
|
185
|
+
rule /"/, Str::Char, :pop!
|
186
|
+
mixin :has_escapes
|
187
|
+
end
|
188
|
+
|
189
|
+
state :breakout do
|
190
|
+
rule /(?=\w+\b(#{SML.keywords.to_a.join('|')})\b(?!'))/ do
|
191
|
+
pop!
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
state :sname do
|
196
|
+
mixin :whitespace
|
197
|
+
mixin :breakout
|
198
|
+
rule id, Name::Namespace
|
199
|
+
rule(//) { pop! }
|
200
|
+
end
|
201
|
+
|
202
|
+
state :has_annotations do
|
203
|
+
rule /'[\w']*/, Name::Decorator
|
204
|
+
rule /[(]/, Punctuation, :tyvarseq
|
205
|
+
end
|
206
|
+
|
207
|
+
state :fname do
|
208
|
+
mixin :whitespace
|
209
|
+
mixin :has_annotations
|
210
|
+
|
211
|
+
rule id, Name::Function, :pop!
|
212
|
+
rule symbol, Name::Function, :pop!
|
213
|
+
end
|
214
|
+
|
215
|
+
state :vname do
|
216
|
+
mixin :whitespace
|
217
|
+
mixin :has_annotations
|
218
|
+
|
219
|
+
rule /(#{id})(\s*)(=(?!#{symbol}))/m do
|
220
|
+
groups Name::Variable, Text, Punctuation
|
221
|
+
pop!
|
222
|
+
end
|
223
|
+
|
224
|
+
rule /(#{symbol})(\s*)(=(?!#{symbol}))/m do
|
225
|
+
groups Name::Variable, Text, Punctuation
|
226
|
+
end
|
227
|
+
|
228
|
+
rule id, Name::Variable, :pop!
|
229
|
+
rule symbol, Name::Variable, :pop!
|
230
|
+
|
231
|
+
rule(//) { pop! }
|
232
|
+
end
|
233
|
+
|
234
|
+
state :tname do
|
235
|
+
mixin :whitespace
|
236
|
+
mixin :breakout
|
237
|
+
mixin :has_annotations
|
238
|
+
|
239
|
+
rule /'[\w']*/, Name::Decorator
|
240
|
+
rule /[(]/, Punctuation, :tyvarseq
|
241
|
+
|
242
|
+
rule %r(=(?!#{symbol})) do
|
243
|
+
token Punctuation
|
244
|
+
goto :typbind
|
245
|
+
end
|
246
|
+
|
247
|
+
rule id, Keyword::Type
|
248
|
+
rule symbol, Keyword::Type
|
249
|
+
end
|
250
|
+
|
251
|
+
state :typbind do
|
252
|
+
mixin :whitespace
|
253
|
+
|
254
|
+
rule /\b(and)\b(?!')/ do
|
255
|
+
token Keyword::Reserved
|
256
|
+
goto :tname
|
257
|
+
end
|
258
|
+
|
259
|
+
mixin :breakout
|
260
|
+
mixin :core
|
261
|
+
end
|
262
|
+
|
263
|
+
state :dname do
|
264
|
+
mixin :whitespace
|
265
|
+
mixin :breakout
|
266
|
+
mixin :has_annotations
|
267
|
+
|
268
|
+
rule /(=)(\s*)(datatype)\b/ do
|
269
|
+
groups Punctuation, Text, Keyword::Reserved
|
270
|
+
pop!
|
271
|
+
end
|
272
|
+
|
273
|
+
rule %r(=(?!#{symbol})) do
|
274
|
+
token Punctuation
|
275
|
+
goto :datbind
|
276
|
+
push :datcon
|
277
|
+
end
|
278
|
+
|
279
|
+
rule id, Keyword::Type
|
280
|
+
rule symbol, Keyword::Type
|
281
|
+
end
|
282
|
+
|
283
|
+
state :datbind do
|
284
|
+
mixin :whitespace
|
285
|
+
rule /\b(and)\b(?!')/ do
|
286
|
+
token Keyword::Reserved; goto :dname
|
287
|
+
end
|
288
|
+
rule /\b(withtype)\b(?!')/ do
|
289
|
+
token Keyword::Reserved; goto :tname
|
290
|
+
end
|
291
|
+
rule /\bof\b(?!')/, Keyword::Reserved
|
292
|
+
rule /([|])(\s*)(#{id})/ do
|
293
|
+
groups(Punctuation, Text, Name::Class)
|
294
|
+
end
|
295
|
+
|
296
|
+
rule /([|])(\s+)(#{symbol})/ do
|
297
|
+
groups(Punctuation, Text, Name::Class)
|
298
|
+
end
|
299
|
+
|
300
|
+
mixin :breakout
|
301
|
+
mixin :core
|
302
|
+
end
|
303
|
+
|
304
|
+
state :ename do
|
305
|
+
mixin :whitespace
|
306
|
+
rule /(exception|and)(\s+)(#{id})/ do
|
307
|
+
groups Keyword::Reserved, Text, Name::Class
|
308
|
+
end
|
309
|
+
|
310
|
+
rule /(exception|and)(\s*)(#{symbol})/ do
|
311
|
+
groups Keyword::Reserved, Text, Name::Class
|
312
|
+
end
|
313
|
+
|
314
|
+
rule /\b(of)\b(?!')/, Keyword::Reserved
|
315
|
+
mixin :breakout
|
316
|
+
mixin :core
|
317
|
+
end
|
318
|
+
|
319
|
+
state :datcon do
|
320
|
+
mixin :whitespace
|
321
|
+
rule id, Name::Class, :pop!
|
322
|
+
rule symbol, Name::Class, :pop!
|
323
|
+
end
|
324
|
+
|
325
|
+
state :tyvarseq do
|
326
|
+
mixin :whitespace
|
327
|
+
rule /'[\w']*/, Name::Decorator
|
328
|
+
rule id, Name
|
329
|
+
rule /,/, Punctuation
|
330
|
+
rule /[)]/, Punctuation, :pop!
|
331
|
+
rule symbol, Name
|
332
|
+
end
|
333
|
+
|
334
|
+
state :comment do
|
335
|
+
rule /[^(*)]+/, Comment::Multiline
|
336
|
+
rule /[(][*]/ do
|
337
|
+
token Comment::Multiline; push
|
338
|
+
end
|
339
|
+
rule /[*][)]/, Comment::Multiline, :pop!
|
340
|
+
rule /[(*)]/, Comment::Multiline
|
341
|
+
end
|
112
342
|
end
|
113
343
|
end
|
114
344
|
end
|