Comparing version 0.1.2 to 0.1.3
47
mojik.js
/*! | ||
* Mojik v0.1.2 https://github.com/terkel/mojik | ||
* Mojik v0.1.3 https://github.com/terkel/mojik | ||
* @author Takeru Suzuki http://terkel.jp/ | ||
@@ -109,7 +109,7 @@ * @license MIT http://opensource.org/licenses/MIT | ||
var reTagDivider = new RegExp(reTagStr + "|[^<>]+", "gi"); | ||
var reObun = new RegExp("[" + Mojik.characters.western + "]+", "g"); | ||
var reObunAhead = new RegExp("[" + Mojik.characters.western + "]+$"); | ||
var reObunBehind = new RegExp("^[" + Mojik.characters.western + "]+"); | ||
var reIgnoreTag = new RegExp("^<(" + Mojik.ignoreTag + ")[ >]", "i"); | ||
var reYakumonoStr = | ||
var reWestern = new RegExp("[" + Mojik.characters.western + "]+", "g"); | ||
var reWesternAhead = new RegExp("[" + Mojik.characters.western + "]+$"); | ||
var reWesternBehind = new RegExp("^[" + Mojik.characters.western + "]+"); | ||
var reJaPuncStr = | ||
Mojik.characters.japaneseOpeningBrackets + | ||
@@ -121,6 +121,6 @@ Mojik.characters.japaneseClosingBrackets + | ||
Mojik.characters.japaneseFullWidthSpace; | ||
var reYakumonoAhead = new RegExp("[" + reYakumonoStr + "]$"); | ||
var reYakumonoBehind = new RegExp("^[" + reYakumonoStr + "]"); | ||
var reOpenKakko = new RegExp("[" + Mojik.characters.japaneseOpeningBrackets + "]", "g"); | ||
var puncPairs = [ | ||
var reJaPuncAhead = new RegExp("[" + reJaPuncStr + "]$"); | ||
var reJaPuncBehind = new RegExp("^[" + reJaPuncStr + "]"); | ||
var reJaOpeningBracket = new RegExp("[" + Mojik.characters.japaneseOpeningBrackets + "]", "g"); | ||
var jaPuncPairs = [ | ||
[Mojik.characters.japaneseClosingBrackets, | ||
@@ -162,4 +162,3 @@ Mojik.characters.japaneseOpeningBrackets + | ||
var nonTagSlices = []; | ||
var node; | ||
var textSlices = []; | ||
var openingBracketList; | ||
@@ -204,6 +203,6 @@ var westernList; | ||
// テキストスライスを保存 | ||
nonTagSlices.push(slices[i]); | ||
textSlices.push(slices[i]); | ||
// 欧文を検出 | ||
slices[i] = slices[i].replace(reObun, function (match, offset) { | ||
slices[i] = slices[i].replace(reWestern, function (match, offset) { | ||
@@ -214,3 +213,3 @@ // 数字 | ||
// 要素の先頭 | ||
var isAtParagraphHead = offset === 0 && (i === 0 || nonTagSlices.length === 1); | ||
var isAtParagraphHead = offset === 0 && (i === 0 || textSlices.length === 1); | ||
@@ -229,8 +228,8 @@ var k; | ||
// スライス中の2文字目以降で和文約物に後続 | ||
(offset > 0 && reYakumonoAhead.test(slices[i].substring(0, offset))) || | ||
(offset > 0 && reJaPuncAhead.test(slices[i].substring(0, offset))) || | ||
// スライスの先頭で、先行する直近のテキストスライスが和文約物か欧文で終わる | ||
(offset === 0 && nonTagSlices.length > 1 && ( | ||
reYakumonoAhead.test(nonTagSlices[nonTagSlices.length - 2]) || | ||
reObunAhead.test(nonTagSlices[nonTagSlices.length - 2]) | ||
(offset === 0 && textSlices.length > 1 && ( | ||
reJaPuncAhead.test(textSlices[textSlices.length - 2]) || | ||
reWesternAhead.test(textSlices[textSlices.length - 2]) | ||
)); | ||
@@ -245,3 +244,3 @@ | ||
// 後続する直近のテキストスライスが和文約物で始まる | ||
reYakumonoBehind.test(slices[i].substring(offset + match.length)); | ||
reJaPuncBehind.test(slices[i].substring(offset + match.length)); | ||
@@ -270,3 +269,3 @@ // 右スペースを除去 2 | ||
// タグをまたいで後続する直近のテキストスライスが和文約物か欧文で始まる | ||
if (reYakumonoBehind.test(slices[k]) || reObunBehind.test(slices[k])) { | ||
if (reJaPuncBehind.test(slices[k]) || reWesternBehind.test(slices[k])) { | ||
hasNoSpaceAfter = true; | ||
@@ -291,3 +290,3 @@ } | ||
// 和文始め括弧を検出 | ||
tmp = slices[i].replace(reOpenKakko, function (match, offset) { | ||
tmp = slices[i].replace(reJaOpeningBracket, function (match, offset) { | ||
var isAtParagraphHead; | ||
@@ -297,3 +296,3 @@ var isLead; | ||
var matchBefore = | ||
offset === 0? (new RegExp("[" + Mojik.characters.japaneseOpeningBrackets + "]$")).exec(nonTagSlices[nonTagSlices.length - 2]): | ||
offset === 0? (new RegExp("[" + Mojik.characters.japaneseOpeningBrackets + "]$")).exec(textSlices[textSlices.length - 2]): | ||
offset > 0? (new RegExp("[" + Mojik.characters.japaneseOpeningBrackets + "]")).exec(slices[i].charAt(offset - 1)): | ||
@@ -310,3 +309,3 @@ null; | ||
// 要素の先頭 | ||
else if (offset === 0 && (i === 0 || nonTagSlices.length === 1)) { | ||
else if (offset === 0 && (i === 0 || textSlices.length === 1)) { | ||
return "<span class=\"" + htmlClass.leadOpeningBracket + | ||
@@ -327,3 +326,3 @@ " " + htmlClass.leadOpeningBracket_atParagraphHead + | ||
// 連続する和文約物を検出 | ||
puncPairs.forEach(function (pair) { | ||
jaPuncPairs.forEach(function (pair) { | ||
var reAhead = new RegExp("[" + pair[0] + "]", "g"); | ||
@@ -330,0 +329,0 @@ var reBehind = new RegExp("^(?:" + reTagStr + ")*([" + pair[1] + "])"); |
{ | ||
"name": "mojik", | ||
"version": "0.1.2", | ||
"description": "Typesetting for Japanese web typography", | ||
"version": "0.1.3", | ||
"description": "Take control of Japanese typesetting on the web", | ||
"main": "mojik.js", | ||
@@ -6,0 +6,0 @@ "scripts": { |
# Mojik | ||
<b>Mojik</b>は、ウェブにおける和文の文字組みの「アキ」をコントロールするためのJavaScriptライブラリです。指定した要素のテキストを探索して、以下のパターンでのアキのコントロールを可能にします。 | ||
<b>Mojik</b>は、ウェブにおける和文の文字組みをコントロールするためのJavaScriptライブラリです。現在のところ、以下のパターンでの「アキ」の調整ができます。 | ||
- 連続する約物(括弧や句読点など)の間のアキ | ||
- 行頭の始め括弧の前のアキ | ||
- 連続する約物のアキ | ||
- 行頭の始め括弧のアキ | ||
- 和欧間のアキ | ||
@@ -21,3 +21,3 @@ | ||
`Mojik.compose()`メソッドを呼び出します。引数には文字組を適用したい要素のCSSセレクターを渡します。 | ||
`Mojik.compose()`メソッドを呼び出します。引数には、文字組みを適用したい段落や見出しなどのCSSセレクターを渡します。 | ||
@@ -28,3 +28,3 @@ <script> | ||
各アキ量は`mojik.css`で調整します。 | ||
各アキ量はCSSで調整します。 | ||
@@ -31,0 +31,0 @@ ``` |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
6
28593
433