text: rewrite embedding to use set_shape_renderer

No more arcane unicode magic!

Closes #177

Related to #170, #171, #158, #103, and #153 too.
This commit is contained in:
Andy Meneely
2016-09-15 15:19:56 -04:00
parent 0501a94bac
commit ee2ed28550
10 changed files with 267 additions and 102 deletions
+73
View File
@@ -0,0 +1,73 @@
require 'spec_helper'
require 'squib/graphics/embedding_utils'
describe Squib::EmbeddingUtils do
context(:indices) do
it 'returns nothing when given nothing' do
expect(Squib::EmbeddingUtils.indices('just some text', [])).to eq({})
end
it 'returns emptiness for given keys that are not in the string' do
str = 'just some text'
keys = [':tool:']
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => []
})
end
it 'returns correctly for one key, one time' do
str = 'some :tool: text'
keys = [':tool:']
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [5..11]
})
end
it 'handles one key, multiple times' do
str = 'some :tool: text :tool:'
keys = [':tool:']
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [5..11, 17..23]
})
end
it 'handles one key, multiple times next to each other' do
str = 'some :tool::tool: text'
keys = [':tool:']
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [5..11, 11..17]
})
end
it 'handles multiple keys, one time each' do
str = 'some :tool: heart text'
keys = %w(:tool: heart)
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [5..11],
'heart' => [12..17]
})
end
it 'handles multiple keys, multiple times each' do
str = ':tool:some :tool: heart text heart tool'
keys = %w(:tool: heart)
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [0..6, 11..17],
'heart' => [18..23, 29..34]
})
end
it 'handles multibyte properly' do
str = '💡 📷 :tool: heart text'
keys = %w(:tool: heart 💡)
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [10..16],
'heart' => [17..22],
'💡' => [3..4]
})
end
end
end