Update characters
This commit is contained in:
		
							parent
							
								
									52b01e4c50
								
							
						
					
					
						commit
						22becb440a
					
				
							
								
								
									
										37
									
								
								src/index.ts
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								src/index.ts
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -1,11 +1,31 @@
 | 
			
		|||
export default function (nodeClass: string) {
 | 
			
		||||
  const nodes = document.querySelectorAll(`.${nodeClass}`)
 | 
			
		||||
export default function (selectedNode: string, spacing: number = 10) {
 | 
			
		||||
  let spacingCharacter = ''
 | 
			
		||||
  switch (spacing) {
 | 
			
		||||
    case 3:
 | 
			
		||||
      spacingCharacter = '\u2004'
 | 
			
		||||
      break
 | 
			
		||||
    case 4:
 | 
			
		||||
      spacingCharacter = '\u2005'
 | 
			
		||||
      break
 | 
			
		||||
    case 5:
 | 
			
		||||
      spacingCharacter = '\u2009'
 | 
			
		||||
      break
 | 
			
		||||
    case 6:
 | 
			
		||||
      spacingCharacter = '\u2006'
 | 
			
		||||
      break
 | 
			
		||||
    case 10:
 | 
			
		||||
      spacingCharacter = '\u200A'
 | 
			
		||||
      break
 | 
			
		||||
    default:
 | 
			
		||||
      spacingCharacter = '\u2006'
 | 
			
		||||
  }
 | 
			
		||||
  const nodes = document.querySelectorAll(`${selectedNode}`)
 | 
			
		||||
  for (let i in nodes) {
 | 
			
		||||
    processText(nodes[i])
 | 
			
		||||
    processText(nodes[i], spacingCharacter)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function processText(node: Node): void {
 | 
			
		||||
function processText(node: Node, spacingCharacter: string): void {
 | 
			
		||||
  if (node.nodeType === Node.TEXT_NODE) {
 | 
			
		||||
    // detect the characters includes chinese and english, or japanese (kanji or kana) and english
 | 
			
		||||
    const reg = /[\u4e00-\u9fa5\u3040-\u30FF][a-zA-Z]|\w[\u4e00-\u9fa5\u3040-\u30FF]|\w[a-zA-Z]/
 | 
			
		||||
| 
						 | 
				
			
			@ -20,18 +40,16 @@ function processText(node: Node): void {
 | 
			
		|||
        const english_and_number = /[a-zA-Z0-9]/
 | 
			
		||||
        // if the char is chinese or japanese (kanji or kana)
 | 
			
		||||
        if (cnchar_and_kanji.test(textArr[i]) || kana.test(textArr[i])) {
 | 
			
		||||
          console.log(`textArr[i]: ${textArr[i]}`)
 | 
			
		||||
          // if next char is english
 | 
			
		||||
          if (/[a-zA-Z]/.test(textArr[i + 1])) {
 | 
			
		||||
            console.log(`textArr[i + 1]: ${textArr[i + 1]}`)
 | 
			
		||||
            // 1/8 em space
 | 
			
		||||
            newText += textArr[i] + '\u2009'
 | 
			
		||||
            newText += textArr[i] + spacingCharacter
 | 
			
		||||
          } else {
 | 
			
		||||
            newText += textArr[i]
 | 
			
		||||
          }
 | 
			
		||||
        } else if (english_and_number.test(textArr[i])) {
 | 
			
		||||
          if (cnchar_and_kanji.test(textArr[i + 1]) || kana.test(textArr[i + 1])) {
 | 
			
		||||
            newText += textArr[i] + '\u2009'
 | 
			
		||||
            newText += textArr[i] + spacingCharacter
 | 
			
		||||
          } else {
 | 
			
		||||
            newText += textArr[i]
 | 
			
		||||
          }
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +62,6 @@ function processText(node: Node): void {
 | 
			
		|||
    }
 | 
			
		||||
  } else {
 | 
			
		||||
    if (!node.nodeName) return
 | 
			
		||||
    console.log(node.nodeName)
 | 
			
		||||
    for (let i = 0; i < node.childNodes.length; i++) processText(node.childNodes[i])
 | 
			
		||||
    for (let i = 0; i < node.childNodes.length; i++) processText(node.childNodes[i], spacingCharacter)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user