[DRE-commits] [ruby-rouge] 01/03: Imported Upstream version 2.0.2
Youhei SASAKI
uwabami-guest at moszumanska.debian.org
Sun Jul 3 10:15:11 UTC 2016
This is an automated email from the git hooks/post-receive script.
uwabami-guest pushed a commit to annotated tag debian/2.0.2-1
in repository ruby-rouge.
commit 4e39ef8485dbc6a327fbffdf5c81945fc1e5c85b
Author: Youhei SASAKI <uwabami at gfd-dennou.org>
Date: Sun Jul 3 19:11:23 2016 +0900
Imported Upstream version 2.0.2
---
lib/rouge/demos/idlang | 8 ++
lib/rouge/formatters/html.rb | 3 -
lib/rouge/lexers/csharp.rb | 2 +-
lib/rouge/lexers/idlang.rb | 316 +++++++++++++++++++++++++++++++++++++++++
lib/rouge/lexers/java.rb | 14 +-
lib/rouge/lexers/javascript.rb | 23 +++
lib/rouge/lexers/liquid.rb | 2 +-
lib/rouge/lexers/shell.rb | 10 +-
lib/rouge/lexers/twig.rb | 2 +
lib/rouge/theme.rb | 8 ++
lib/rouge/version.rb | 2 +-
11 files changed, 379 insertions(+), 11 deletions(-)
diff --git a/lib/rouge/demos/idlang b/lib/rouge/demos/idlang
new file mode 100644
index 0000000..49f16af
--- /dev/null
+++ b/lib/rouge/demos/idlang
@@ -0,0 +1,8 @@
+for i = 99L, 0, -1 do begin
+
+ print, i, format="(I0, 1X, 'bottles of beer on the wall,')"
+ print, i, format="(I0, 1X, 'bottles of beer.')"
+ print, 'Take one down, pass it around,'
+ print, i, format="(I0, 1X, 'bottles of beer on the wall.', /)"
+
+endfor
diff --git a/lib/rouge/formatters/html.rb b/lib/rouge/formatters/html.rb
index 88a66ac..dc06013 100644
--- a/lib/rouge/formatters/html.rb
+++ b/lib/rouge/formatters/html.rb
@@ -1,8 +1,5 @@
# -*- coding: utf-8 -*- #
-# stdlib
-require 'cgi'
-
module Rouge
module Formatters
# Transforms a token stream into HTML output.
diff --git a/lib/rouge/lexers/csharp.rb b/lib/rouge/lexers/csharp.rb
index 8cec04a..a8d12ce 100644
--- a/lib/rouge/lexers/csharp.rb
+++ b/lib/rouge/lexers/csharp.rb
@@ -43,7 +43,7 @@ module Rouge
state :whitespace do
rule /\s+/m, Text
- rule %r(//.*?\n), Comment::Single
+ rule %r(//.*?$), Comment::Single
rule %r(/[*].*?[*]/)m, Comment::Multiline
end
diff --git a/lib/rouge/lexers/idlang.rb b/lib/rouge/lexers/idlang.rb
new file mode 100644
index 0000000..31b4ff8
--- /dev/null
+++ b/lib/rouge/lexers/idlang.rb
@@ -0,0 +1,316 @@
+# -*- coding: utf-8 -*- #
+# vim: set ts=2 sw=2 et:
+
+module Rouge
+ module Lexers
+ class IDLang < RegexLexer
+ title "IDL"
+ desc "Interactive Data Language"
+
+ tag 'idlang'
+ filenames '*.idl'
+
+ def self.analyze_text(text)
+ # Does there exist a statement that starts with 'pro' or
+ # 'function'?
+ return 0.4 if text =~ /^\s+(pro|function)\z/
+ end
+
+ name = /[_A-Z]\w*/i
+ kind_param = /(\d+|#{name})/
+ exponent = /[dDeE][+-]\d+/
+
+ def self.exec_unit
+ @exec_unit ||= Set.new %w(
+ PRO FUNCTION
+ )
+ end
+
+ def self.keywords
+ @keywords ||= Set.new %w(
+ STRUCT INHERITS
+ RETURN CONTINUE BEGIN END BREAK GOTO
+ )
+ end
+
+ def self.standalone_statements
+ # Must not have a comma afterwards
+ @standalone_statements ||= Set.new %w(
+ COMMON FORWARD_FUNCTION
+ )
+ end
+
+ def self.decorators
+ # Must not have a comma afterwards
+ @decorators ||= Set.new %w(
+ COMPILE_OPT
+ )
+ end
+
+ def self.operators
+ @operators ||= Set.new %w(
+ AND= EQ= GE= GT= LE= LT= MOD= NE= OR= XOR= NOT=
+ )
+ end
+
+ def self.conditionals
+ @conditionals ||= Set.new %w(
+ OF DO ENDIF ENDELSE ENDFOR ENDFOREACH ENDWHILE ENDREP ENDCASE ENDSWITCH
+ IF THEN ELSE FOR FOREACH WHILE REPEAT UNTIL CASE SWITCH
+ AND EQ GE GT LE LT MOD NE OR XOR NOT
+ )
+ end
+
+ def self.routines
+ @routines ||= Set.new %w(
+ A_CORRELATE ABS ACOS ADAPT_HIST_EQUAL ALOG ALOG10
+ AMOEBA ANNOTATE ARG_PRESENT ARRAY_EQUAL
+ ARRAY_INDICES ARROW ASCII_TEMPLATE ASIN ASSOC ATAN
+ AXIS BAR_PLOT BESELI BESELJ BESELK BESELY BETA
+ BILINEAR BIN_DATE BINARY_TEMPLATE BINDGEN BINOMIAL
+ BLAS_AXPY BLK_CON BOX_CURSOR BREAK BREAKPOINT
+ BROYDEN BYTARR BYTE BYTEORDER BYTSCL C_CORRELATE
+ CALDAT CALENDAR CALL_EXTERNAL CALL_FUNCTION
+ CALL_METHOD CALL_PROCEDURE CATCH CD CEIL CHEBYSHEV
+ CHECK_MATH CHISQR_CVF CHISQR_PDF CHOLDC CHOLSOL
+ CINDGEN CIR_3PNT CLOSE CLUST_WTS CLUSTER
+ COLOR_CONVERT COLOR_QUAN COLORMAP_APPLICABLE COMFIT
+ COMPLEX COMPLEXARR COMPLEXROUND
+ COMPUTE_MESH_NORMALS COND CONGRID CONJ
+ CONSTRAINED_MIN CONTOUR CONVERT_COORD CONVOL
+ COORD2TO3 CORRELATE COS COSH CRAMER CREATE_STRUCT
+ CREATE_VIEW CROSSP CRVLENGTH CT_LUMINANCE CTI_TEST
+ CURSOR CURVEFIT CV_COORD CVTTOBM CW_ANIMATE
+ CW_ANIMATE_GETP CW_ANIMATE_LOAD CW_ANIMATE_RUN
+ CW_ARCBALL CW_BGROUP CW_CLR_INDEX CW_COLORSEL
+ CW_DEFROI CW_FIELD CW_FILESEL CW_FORM CW_FSLIDER
+ CW_LIGHT_EDITOR CW_LIGHT_EDITOR_GET
+ CW_LIGHT_EDITOR_SET CW_ORIENT CW_PALETTE_EDITOR
+ CW_PALETTE_EDITOR_GET CW_PALETTE_EDITOR_SET
+ CW_PDMENU CW_RGBSLIDER CW_TMPL CW_ZOOM DBLARR
+ DCINDGEN DCOMPLEX DCOMPLEXARR DEFINE_KEY DEFROI
+ DEFSYSV DELETE_SYMBOL DELLOG DELVAR DERIV DERIVSIG
+ DETERM DEVICE DFPMIN DIALOG_MESSAGE
+ DIALOG_PICKFILE DIALOG_PRINTERSETUP
+ DIALOG_PRINTJOB DIALOG_READ_IMAGE
+ DIALOG_WRITE_IMAGE DICTIONARY DIGITAL_FILTER DILATE DINDGEN
+ DISSOLVE DIST DLM_LOAD DLM_REGISTER
+ DO_APPLE_SCRIPT DOC_LIBRARY DOUBLE DRAW_ROI EFONT
+ EIGENQL EIGENVEC ELMHES EMPTY ENABLE_SYSRTN EOF
+ ERASE ERODE ERRORF ERRPLOT EXECUTE EXIT EXP EXPAND
+ EXPAND_PATH EXPINT EXTRAC EXTRACT_SLICE F_CVF
+ F_PDF FACTORIAL FFT FILE_CHMOD FILE_DELETE
+ FILE_EXPAND_PATH FILE_MKDIR FILE_TEST FILE_WHICH
+ FILE_SEARCH PATH_SEP FILE_DIRNAME FILE_BASENAME
+ FILE_INFO FILE_MOVE FILE_COPY FILE_LINK FILE_POLL_INPUT
+ FILEPATH FINDFILE FINDGEN FINITE FIX FLICK FLOAT
+ FLOOR FLOW3 FLTARR FLUSH FORMAT_AXIS_VALUES
+ FORWARD_FUNCTION FREE_LUN FSTAT FULSTR FUNCT
+ FV_TEST FX_ROOT FZ_ROOTS GAMMA GAMMA_CT
+ GAUSS_CVF GAUSS_PDF GAUSS2DFIT GAUSSFIT GAUSSINT
+ GET_DRIVE_LIST GET_KBRD GET_LUN GET_SCREEN_SIZE
+ GET_SYMBOL GETENV GOTO GREG2JUL GRID_TPS GRID3 GS_ITER
+ H_EQ_CT H_EQ_INT HANNING HASH HEAP_GC HELP HILBERT
+ HIST_2D HIST_EQUAL HISTOGRAM HLS HOUGH HQR HSV
+ IBETA IDENTITY IDL_CONTAINER IDLANROI
+ IDLANROIGROUP IDLFFDICOM IDLFFDXF IDLFFLANGUAGECAT
+ IDLFFSHAPE IDLGRAXIS IDLGRBUFFER IDLGRCLIPBOARD
+ IDLGRCOLORBAR IDLGRCONTOUR IDLGRFONT IDLGRIMAGE
+ IDLGRLEGEND IDLGRLIGHT IDLGRMODEL IDLGRMPEG
+ IDLGRPALETTE IDLGRPATTERN IDLGRPLOT IDLGRPOLYGON
+ IDLGRPOLYLINE IDLGRPRINTER IDLGRROI IDLGRROIGROUP
+ IDLGRSCENE IDLGRSURFACE IDLGRSYMBOL
+ IDLGRTESSELLATOR IDLGRTEXT IDLGRVIEW
+ IDLGRVIEWGROUP IDLGRVOLUME IDLGRVRML IDLGRWINDOW
+ IGAMMA IMAGE_CONT IMAGE_STATISTICS IMAGINARY
+ INDGEN INT_2D INT_3D INT_TABULATED INTARR INTERPOL
+ INTERPOLATE INVERT IOCTL ISA ISHFT ISOCONTOUR
+ ISOSURFACE JOURNAL JUL2GREG JULDAY KEYWORD_SET KRIG2D
+ KURTOSIS KW_TEST L64INDGEN LABEL_DATE LABEL_REGION
+ LADFIT LAGUERRE LEEFILT LEGENDRE LINBCG LINDGEN
+ LINFIT LINKIMAGE LIST LIVE_CONTOUR LIVE_CONTROL
+ LIVE_DESTROY LIVE_EXPORT LIVE_IMAGE LIVE_INFO
+ LIVE_LINE LIVE_LOAD LIVE_OPLOT LIVE_PLOT
+ LIVE_PRINT LIVE_RECT LIVE_STYLE LIVE_SURFACE
+ LIVE_TEXT LJLCT LL_ARC_DISTANCE LMFIT LMGR LNGAMMA
+ LNP_TEST LOADCT LOCALE_GET LON64ARR LONARR LONG
+ LONG64 LSODE LU_COMPLEX LUDC LUMPROVE LUSOL
+ M_CORRELATE MACHAR MAKE_ARRAY MAKE_DLL MAP_2POINTS
+ MAP_CONTINENTS MAP_GRID MAP_IMAGE MAP_PATCH
+ MAP_PROJ_INFO MAP_SET MAX MATRIX_MULTIPLY MD_TEST MEAN
+ MEANABSDEV MEDIAN MEMORY MESH_CLIP MESH_DECIMATE
+ MESH_ISSOLID MESH_MERGE MESH_NUMTRIANGLES MESH_OBJ
+ MESH_SMOOTH MESH_SURFACEAREA MESH_VALIDATE
+ MESH_VOLUME MESSAGE MIN MIN_CURVE_SURF MK_HTML_HELP
+ MODIFYCT MOMENT MORPH_CLOSE MORPH_DISTANCE
+ MORPH_GRADIENT MORPH_HITORMISS MORPH_OPEN
+ MORPH_THIN MORPH_TOPHAT MPEG_CLOSE MPEG_OPEN
+ MPEG_PUT MPEG_SAVE MSG_CAT_CLOSE MSG_CAT_COMPILE
+ MSG_CAT_OPEN MULTI N_ELEMENTS N_PARAMS N_TAGS
+ NEWTON NORM OBJ_CLASS OBJ_DESTROY OBJ_ISA OBJ_NEW
+ OBJ_VALID OBJARR ON_ERROR ON_IOERROR ONLINE_HELP
+ OPEN OPENR OPENW OPENU OPLOT OPLOTERR ORDEREDHASH P_CORRELATE
+ PARTICLE_TRACE PCOMP PLOT PLOT_3DBOX PLOT_FIELD
+ PLOTERR PLOTS PNT_LINE POINT_LUN POLAR_CONTOUR
+ POLAR_SURFACE POLY POLY_2D POLY_AREA POLY_FIT
+ POLYFILL POLYFILLV POLYSHADE POLYWARP POPD POWELL
+ PRIMES PRINT PRINTF PRINTD PRODUCT PROFILE PROFILER
+ PROFILES PROJECT_VOL PS_SHOW_FONTS PSAFM PSEUDO
+ PTR_FREE PTR_NEW PTR_VALID PTRARR PUSHD QROMB
+ QROMO QSIMP QUERY_CSV R_CORRELATE R_TEST RADON RANDOMN
+ RANDOMU RANKS RDPIX READ READF READ_ASCII
+ READ_BINARY READ_BMP READ_CSV READ_DICOM READ_IMAGE
+ READ_INTERFILE READ_JPEG READ_PICT READ_PNG
+ READ_PPM READ_SPR READ_SRF READ_SYLK READ_TIFF
+ READ_WAV READ_WAVE READ_X11_BITMAP READ_XWD READS
+ READU REBIN RECALL_COMMANDS RECON3 REDUCE_COLORS
+ REFORM REGRESS REPLICATE REPLICATE_INPLACE
+ RESOLVE_ALL RESOLVE_ROUTINE RESTORE RETALL
+ REVERSE REWIND RK4 ROBERTS ROT ROTATE ROUND
+ ROUTINE_INFO RS_TEST S_TEST SAVE SAVGOL SCALE3
+ SCALE3D SCOPE_LEVEL SCOPE_TRACEBACK SCOPE_VARFETCH
+ SCOPE_VARNAME SEARCH2D SEARCH3D SET_PLOT SET_SHADING
+ SET_SYMBOL SETENV SETLOG SETUP_KEYS SFIT
+ SHADE_SURF SHADE_SURF_IRR SHADE_VOLUME SHIFT SHOW3
+ SHOWFONT SIGNUM SIN SINDGEN SINH SIZE SKEWNESS SKIPF
+ SLICER3 SLIDE_IMAGE SMOOTH SOBEL SOCKET SORT SPAWN
+ SPH_4PNT SPH_SCAT SPHER_HARM SPL_INIT SPL_INTERP
+ SPLINE SPLINE_P SPRSAB SPRSAX SPRSIN SPRSTP SQRT
+ STANDARDIZE STDDEV STOP STRARR STRCMP STRCOMPRESS
+ STREAMLINE STREGEX STRETCH STRING STRJOIN STRLEN
+ STRLOWCASE STRMATCH STRMESSAGE STRMID STRPOS
+ STRPUT STRSPLIT STRTRIM STRUCT_ASSIGN STRUCT_HIDE
+ STRUPCASE SURFACE SURFR SVDC SVDFIT SVSOL
+ SWAP_ENDIAN SWITCH SYSTIME T_CVF T_PDF T3D
+ TAG_NAMES TAN TANH TAPRD TAPWRT TEK_COLOR
+ TEMPORARY TETRA_CLIP TETRA_SURFACE TETRA_VOLUME
+ THIN THREED TIME_TEST2 TIMEGEN TM_TEST TOTAL TRACE
+ TRANSPOSE TRI_SURF TRIANGULATE TRIGRID TRIQL
+ TRIRED TRISOL TRNLOG TS_COEF TS_DIFF TS_FCAST
+ TS_SMOOTH TV TVCRS TVLCT TVRD TVSCL TYPENAME UINDGEN UINT
+ UINTARR UL64INDGEN ULINDGEN ULON64ARR ULONARR
+ ULONG ULONG64 UNIQ USERSYM VALUE_LOCATE VARIANCE
+ VAX_FLOAT VECTOR_FIELD VEL VELOVECT VERT_T3D VOIGT
+ VORONOI VOXEL_PROJ WAIT WARP_TRI WATERSHED WDELETE
+ WEOF WF_DRAW WHERE WIDGET_BASE WIDGET_BUTTON
+ WIDGET_CONTROL WIDGET_DRAW WIDGET_DROPLIST
+ WIDGET_EVENT WIDGET_INFO WIDGET_LABEL WIDGET_LIST
+ WIDGET_SLIDER WIDGET_TABLE WIDGET_TEXT WINDOW
+ WRITE_BMP WRITE_CSV WRITE_IMAGE WRITE_JPEG WRITE_NRIF
+ WRITE_PICT WRITE_PNG WRITE_PPM WRITE_SPR WRITE_SRF
+ WRITE_SYLK WRITE_TIFF WRITE_WAV WRITE_WAVE WRITEU
+ WSET WSHOW WTN WV_APPLET WV_CW_WAVELET WV_CWT
+ WV_DENOISE WV_DWT WV_FN_COIFLET WV_FN_DAUBECHIES
+ WV_FN_GAUSSIAN WV_FN_HAAR WV_FN_MORLET WV_FN_PAUL
+ WV_FN_SYMLET WV_IMPORT_DATA WV_IMPORT_WAVELET
+ WV_PLOT3D_WPS WV_PLOT_MULTIRES WV_PWT
+ WV_TOOL_DENOISE XBM_EDIT XDISPLAYFILE XDXF XFONT
+ XINTERANIMATE XLOADCT XMANAGER XMNG_TMPL XMTOOL
+ XOBJVIEW XPALETTE XPCOLOR XPLOT3D XREGISTERED XROI
+ XSQ_TEST XSURFACE XVAREDIT XVOLUME XVOLUME_ROTATE
+ XVOLUME_WRITE_IMAGE XYOUTS ZOOM ZOOM_24
+ )
+ end
+
+ state :root do
+ rule /[\s\n]+/, Text::Whitespace
+ # Normal comments
+ rule /;.*$/, Comment::Single
+ rule /\,\s*\,/, Error
+ rule /\!#{name}/, Name::Variable::Global
+
+ rule /[(),:\&\$]/, Punctuation
+
+ ## Format statements are quite a strange beast.
+ ## Better process them in their own state.
+ #rule /\b(FORMAT)(\s*)(\()/mi do |m|
+ # token Keyword, m[1]
+ # token Text::Whitespace, m[2]
+ # token Punctuation, m[3]
+ # push :format_spec
+ #end
+
+ rule %r(
+ [+-]? # sign
+ (
+ (\d+[.]\d*|[.]\d+)(#{exponent})?
+ | \d+#{exponent} # exponent is mandatory
+ )
+ (_#{kind_param})? # kind parameter
+ )xi, Num::Float
+
+ rule /\d+(B|S|U|US|LL|L|ULL|UL)?/i, Num::Integer
+ rule /"[0-7]+(B|O|U|ULL|UL|LL|L)?/i, Num::Oct
+ rule /'[0-9A-F]+'X(B|S|US|ULL|UL|U|LL|L)?/i, Num::Hex
+ rule /(#{kind_param}_)?'/, Str::Single, :string_single
+ rule /(#{kind_param}_)?"/, Str::Double, :string_double
+
+ rule %r{\#\#|\#|\&\&|\|\||/=|<=|>=|->|\@|\?|[-+*/<=~^{}]}, Operator
+ # Structures and the like
+ rule /(#{name})(\.)([^\s,]*)/i do |m|
+ groups Name, Operator, Name
+ #delegate IDLang, m[3]
+ end
+
+ rule /(function|pro)((?:\s|\$\s)+)/i do
+ groups Keyword, Text::Whitespace
+ push :funcname
+ end
+
+ rule /#{name}/m do |m|
+ match = m[0].upcase
+ if self.class.keywords.include? match
+ token Keyword
+ elsif self.class.conditionals.include? match
+ token Keyword
+ elsif self.class.decorators.include? match
+ token Name::Decorator
+ elsif self.class.standalone_statements.include? match
+ token Keyword::Reserved
+ elsif self.class.operators.include? match
+ token Operator::Word
+ elsif self.class.routines.include? match
+ token Name::Builtin
+ else
+ token Name
+ end
+ end
+
+ end
+
+ state :funcname do
+ rule /#{name}/, Name::Function
+
+ rule /\s+/, Text::Whitespace
+ rule /(:+|\$)/, Operator
+ rule /;.*/, Comment::Single
+
+ # Be done with this state if we hit EOL or comma
+ rule /$/, Text::Whitespace, :pop!
+ rule /,/, Operator, :pop!
+ end
+
+ state :string_single do
+ rule /[^']+/, Str::Single
+ rule /''/, Str::Escape
+ rule /'/, Str::Single, :pop!
+ end
+
+ state :string_double do
+ rule /[^"]+/, Str::Double
+ rule /"/, Str::Double, :pop!
+ end
+
+ state :format_spec do
+ rule /'/, Str::Single, :string_single
+ rule /"/, Str::Double, :string_double
+ rule /\(/, Punctuation, :format_spec
+ rule /\)/, Punctuation, :pop!
+ rule /,/, Punctuation
+ rule /[\s\n]+/, Text::Whitespace
+ # Edit descriptors could be seen as a kind of "format literal".
+ rule /[^\s'"(),]+/, Literal
+ end
+ end
+ end
+end
diff --git a/lib/rouge/lexers/java.rb b/lib/rouge/lexers/java.rb
index 8a142b2..2322dd9 100644
--- a/lib/rouge/lexers/java.rb
+++ b/lib/rouge/lexers/java.rb
@@ -56,12 +56,20 @@ module Rouge
rule /(\.)(#{id})/ do
groups Operator, Name::Attribute
end
+
rule /#{id}:/, Name::Label
rule /\$?#{id}/, Name
rule /[~^*!%&\[\](){}<>\|+=:;,.\/?-]/, Operator
- rule /[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
- rule /0x[0-9a-f]+/, Num::Hex
- rule /[0-9]+L?/, Num::Integer
+
+ digit = /[0-9]_+[0-9]|[0-9]/
+ bin_digit = /[01]_+[01]|[01]/
+ oct_digit = /[0-7]_+[0-7]|[0-7]/
+ hex_digit = /[0-9a-f]_+[0-9a-f]|[0-9a-f]/i
+ rule /#{digit}+\.#{digit}+([eE]#{digit}+)?[fd]?/, Num::Float
+ rule /0b#{bin_digit}+/i, Num::Bin
+ rule /0x#{hex_digit}+/i, Num::Hex
+ rule /0#{oct_digit}+/, Num::Oct
+ rule /#{digit}+L?/, Num::Integer
rule /\n/, Text
end
diff --git a/lib/rouge/lexers/javascript.rb b/lib/rouge/lexers/javascript.rb
index 923a95c..1b3fdd6 100644
--- a/lib/rouge/lexers/javascript.rb
+++ b/lib/rouge/lexers/javascript.rb
@@ -139,6 +139,11 @@ module Rouge
rule /;/, Punctuation, :statement
rule /[)\].]/, Punctuation
+ rule /`/ do
+ token Str::Double
+ push :template_string
+ end
+
rule /[?]/ do
token Punctuation
push :ternary
@@ -170,10 +175,16 @@ module Rouge
rule /[0-9]+/, Num::Integer
rule /"(\\\\|\\"|[^"])*"/, Str::Double
rule /'(\\\\|\\'|[^'])*'/, Str::Single
+ rule /:/, Punctuation
end
# braced parts that aren't object literals
state :statement do
+ rule /case\b/ do
+ token Keyword
+ goto :expr_start
+ end
+
rule /(#{id})(\s*)(:)/ do
groups Name::Label, Text, Punctuation
end
@@ -215,6 +226,18 @@ module Rouge
mixin :root
end
+
+ # template strings
+ state :template_string do
+ rule /\${/, Punctuation, :template_string_expr
+ rule /`/, Str::Double, :pop!
+ rule /(\\\\|\\[\$`]|[^\$`]|\$[^{])*/, Str::Double
+ end
+
+ state :template_string_expr do
+ rule /}/, Punctuation, :pop!
+ mixin :root
+ end
end
class JSON < RegexLexer
diff --git a/lib/rouge/lexers/liquid.rb b/lib/rouge/lexers/liquid.rb
index 071181e..dad7e0d 100644
--- a/lib/rouge/lexers/liquid.rb
+++ b/lib/rouge/lexers/liquid.rb
@@ -210,7 +210,7 @@ module Rouge
state :variable do
rule /\.(?=\w)/, Punctuation
- rule /[a-zA-Z_]\w*/, Name::Variable
+ rule /[a-zA-Z_]\w*\??/, Name::Variable
end
state :string do
diff --git a/lib/rouge/lexers/shell.rb b/lib/rouge/lexers/shell.rb
index 8b7134e..c40475e 100644
--- a/lib/rouge/lexers/shell.rb
+++ b/lib/rouge/lexers/shell.rb
@@ -47,7 +47,6 @@ module Rouge
rule /[\[\]{}()=]/, Operator
rule /&&|\|\|/, Operator
- # rule /\|\|/, Operator
rule /<<</, Operator # here-string
rule /<<-?\s*(\'?)\\?(\w+)\1/ do |m|
@@ -70,6 +69,12 @@ module Rouge
rule /[^"`\\$]+/, Str::Double
end
+ state :ansi_string do
+ rule /\\./, Str::Escape
+ rule /[^\\']+/, Str::Single
+ mixin :single_quotes
+ end
+
state :single_quotes do
rule /'/, Str::Single, :pop!
rule /[^']+/, Str::Single
@@ -79,13 +84,14 @@ module Rouge
rule /\s+/, Text
rule /\\./, Str::Escape
rule /\$?"/, Str::Double, :double_quotes
+ rule /\$'/, Str::Single, :ansi_string
# single quotes are much easier than double quotes - we can
# literally just scan until the next single quote.
# POSIX: Enclosing characters in single-quotes ( '' )
# shall preserve the literal value of each character within the
# single-quotes. A single-quote cannot occur within single-quotes.
- rule /$?'/, Str::Single, :single_quotes
+ rule /'/, Str::Single, :single_quotes
rule /\*/, Keyword
diff --git a/lib/rouge/lexers/twig.rb b/lib/rouge/lexers/twig.rb
index 5fcf069..7eb6198 100644
--- a/lib/rouge/lexers/twig.rb
+++ b/lib/rouge/lexers/twig.rb
@@ -10,6 +10,8 @@ module Rouge
tag "twig"
+ filenames '*.twig'
+
mimetypes 'application/x-twig', 'text/html+twig'
def self.keywords
diff --git a/lib/rouge/theme.rb b/lib/rouge/theme.rb
index d6d2ddf..aa74d86 100644
--- a/lib/rouge/theme.rb
+++ b/lib/rouge/theme.rb
@@ -74,6 +74,14 @@ module Rouge
new(opts).render(&b)
end
+ def get_own_style(token)
+ self.class.get_own_style(token)
+ end
+
+ def get_style(token)
+ self.class.get_style(token)
+ end
+
class << self
def style(*tokens)
style = tokens.last.is_a?(Hash) ? tokens.pop : {}
diff --git a/lib/rouge/version.rb b/lib/rouge/version.rb
index 053b168..7e33c17 100644
--- a/lib/rouge/version.rb
+++ b/lib/rouge/version.rb
@@ -2,6 +2,6 @@
module Rouge
def self.version
- "2.0.1"
+ "2.0.2"
end
end
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-rouge.git
More information about the Pkg-ruby-extras-commits
mailing list