PageRenderTime 36ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/syntaxhighlighter_3.0.83/src/shLegacy.js

#
JavaScript | 157 lines | 116 code | 23 blank | 18 comment | 22 complexity | dcf9a5a97e44fc0e0b547d7ef7f2c9a1 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, BSD-3-Clause
  1. /**
  2. * SyntaxHighlighter
  3. * http://alexgorbatchev.com/SyntaxHighlighter
  4. *
  5. * SyntaxHighlighter is donationware. If you are using it, please donate.
  6. * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
  7. *
  8. * @version
  9. * 3.0.83 (July 02 2010)
  10. *
  11. * @copyright
  12. * Copyright (C) 2004-2010 Alex Gorbatchev.
  13. *
  14. * @license
  15. * Dual licensed under the MIT and GPL licenses.
  16. */
  17. var dp = {
  18. SyntaxHighlighter : {}
  19. };
  20. dp.SyntaxHighlighter = {
  21. parseParams: function(
  22. input,
  23. showGutter,
  24. showControls,
  25. collapseAll,
  26. firstLine,
  27. showColumns
  28. )
  29. {
  30. function getValue(list, name)
  31. {
  32. var regex = new XRegExp('^' + name + '\\[(?<value>\\w+)\\]$', 'gi'),
  33. match = null
  34. ;
  35. for (var i = 0; i < list.length; i++)
  36. if ((match = regex.exec(list[i])) != null)
  37. return match.value;
  38. return null;
  39. };
  40. function defaultValue(value, def)
  41. {
  42. return value != null ? value : def;
  43. };
  44. function asString(value)
  45. {
  46. return value != null ? value.toString() : null;
  47. };
  48. var parts = input.split(':'),
  49. brushName = parts[0],
  50. options = {},
  51. straight = { 'true' : true }
  52. reverse = { 'true' : false },
  53. result = null,
  54. defaults = SyntaxHighlighter.defaults
  55. ;
  56. for (var i in parts)
  57. options[parts[i]] = 'true';
  58. showGutter = asString(defaultValue(showGutter, defaults.gutter));
  59. showControls = asString(defaultValue(showControls, defaults.toolbar));
  60. collapseAll = asString(defaultValue(collapseAll, defaults.collapse));
  61. showColumns = asString(defaultValue(showColumns, defaults.ruler));
  62. firstLine = asString(defaultValue(firstLine, defaults['first-line']));
  63. return {
  64. brush : brushName,
  65. gutter : defaultValue(reverse[options.nogutter], showGutter),
  66. toolbar : defaultValue(reverse[options.nocontrols], showControls),
  67. collapse : defaultValue(straight[options.collapse], collapseAll),
  68. // ruler : defaultValue(straight[options.showcolumns], showColumns),
  69. 'first-line' : defaultValue(getValue(parts, 'firstline'), firstLine)
  70. };
  71. },
  72. HighlightAll: function(
  73. name,
  74. showGutter /* optional */,
  75. showControls /* optional */,
  76. collapseAll /* optional */,
  77. firstLine /* optional */,
  78. showColumns /* optional */
  79. )
  80. {
  81. function findValue()
  82. {
  83. var a = arguments;
  84. for (var i = 0; i < a.length; i++)
  85. {
  86. if (a[i] === null)
  87. continue;
  88. if (typeof(a[i]) == 'string' && a[i] != '')
  89. return a[i] + '';
  90. if (typeof(a[i]) == 'object' && a[i].value != '')
  91. return a[i].value + '';
  92. }
  93. return null;
  94. };
  95. function findTagsByName(list, name, tagName)
  96. {
  97. var tags = document.getElementsByTagName(tagName);
  98. for (var i = 0; i < tags.length; i++)
  99. if (tags[i].getAttribute('name') == name)
  100. list.push(tags[i]);
  101. }
  102. var elements = [],
  103. highlighter = null,
  104. registered = {},
  105. propertyName = 'innerHTML'
  106. ;
  107. // for some reason IE doesn't find <pre/> by name, however it does see them just fine by tag name...
  108. findTagsByName(elements, name, 'pre');
  109. findTagsByName(elements, name, 'textarea');
  110. if (elements.length === 0)
  111. return;
  112. for (var i = 0; i < elements.length; i++)
  113. {
  114. var element = elements[i],
  115. params = findValue(
  116. element.attributes['class'], element.className,
  117. element.attributes['language'], element.language
  118. ),
  119. language = ''
  120. ;
  121. if (params === null)
  122. continue;
  123. params = dp.SyntaxHighlighter.parseParams(
  124. params,
  125. showGutter,
  126. showControls,
  127. collapseAll,
  128. firstLine,
  129. showColumns
  130. );
  131. SyntaxHighlighter.highlight(params, element);
  132. }
  133. }
  134. };