2 if (typeof exports
== "object" && typeof module
== "object") // CommonJS
3 mod(require("../../lib/codemirror"));
4 else if (typeof define
== "function" && define
.amd
) // AMD
5 define(["../../lib/codemirror"], mod
);
6 else // Plain browser env
8 })(function(CodeMirror
) {
11 CodeMirror
.defineOption("rulers", false, function(cm
, val
, old
) {
12 if (old
&& old
!= CodeMirror
.Init
) {
14 cm
.off("refresh", refreshRulers
);
16 if (val
&& val
.length
) {
18 cm
.on("refresh", refreshRulers
);
22 function clearRulers(cm
) {
23 for (var i
= cm
.display
.lineSpace
.childNodes
.length
- 1; i
>= 0; i
--) {
24 var node
= cm
.display
.lineSpace
.childNodes
[i
];
25 if (/(^|\s)CodeMirror-ruler($|\s)/.test(node
.className
))
26 node
.parentNode
.removeChild(node
);
30 function setRulers(cm
) {
31 var val
= cm
.getOption("rulers");
32 var cw
= cm
.defaultCharWidth();
33 var left
= cm
.charCoords(CodeMirror
.Pos(cm
.firstLine(), 0), "div").left
;
34 var bot
= -cm
.display
.scroller
.offsetHeight
;
35 for (var i
= 0; i
< val
.length
; i
++) {
36 var elt
= document
.createElement("div");
38 if (typeof val
[i
] == "number") {
42 cls
= val
[i
].className
;
44 elt
.className
= "CodeMirror-ruler" + (cls
? " " + cls
: "");
45 elt
.style
.cssText
= "left: " + (left
+ col
* cw
) + "px; top: -50px; bottom: " + bot
+ "px";
46 cm
.display
.lineSpace
.insertBefore(elt
, cm
.display
.cursorDiv
);
50 function refreshRulers(cm
) {