<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Hi,</p>
<p>I'm currently working on Strong's support for Ezra Project.</p>
<p>I've been implementing a Strong's parsing functionality that
enables flexible formatting of the Strong's definitions (from
StrongsGreek and StrongsHebrew) in my frontend.<br>
Without this functionality the frontend would have to "dump" the
definition of a Strong's key and it wouldn't have freedom in how
the definition is formatted / layed out.<br>
Having this functionality available, the frontend can work with
individual parts of the Strong's definition and apply specific
formatting and layout.<br>
The parsing divides a Strong's entry into:<br>
- Transcription<br>
- Phonetic transcription<br>
- Definition<br>
- List of references<br>
<br>
In case of Ezra Project the formatting looks like this now: <a
href="https://raw.githubusercontent.com/tobias-klein/ezra-project/master/screenshots/strongs_formatting_example.png">https://raw.githubusercontent.com/tobias-klein/ezra-project/master/screenshots/strongs_formatting_example.png</a><br>
<br>
I'm pasting the definition of my StrongsEntry class below, which
is the base for this implementation (see <a
href="https://github.com/tobias-klein/node-sword-interface/blob/master/src/strongs_entry.hpp">https://github.com/tobias-klein/node-sword-interface/blob/master/src/strongs_entry.hpp</a>):<br>
</p>
<div style="color: #d4d4d4;background-color: #1e1e1e;font-family: 'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback';font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span style="color: #569cd6;">class</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">StrongsEntry</span></div><div><span style="color: #d4d4d4;">{</span></div><div><span style="color: #569cd6;">public:</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">StrongsEntry</span><span style="color: #d4d4d4;">(</span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::</span><span style="color: #4ec9b0;">string</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">key</span><span style="color: #d4d4d4;">, </span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::</span><span style="color: #4ec9b0;">string</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">rawEntry</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">virtual</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">~StrongsEntry</span><span style="color: #d4d4d4;">(){}</span></div>
<div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">static</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">StrongsEntry</span><span style="color: #569cd6;">*</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">getStrongsEntry</span><span style="color: #d4d4d4;">(</span><span style="color: #4ec9b0;">sword</span><span style="color: #d4d4d4;">::</span><span style="color: #4ec9b0;">SWModule</span><span style="color: #569cd6;">*</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">module</span><span style="color: #d4d4d4;">, </span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::</span><span style="color: #4ec9b0;">string</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">key</span><span style="color: #d4d4d4;">);</span></div>
<div><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::string rawEntry;</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::string key;</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::string transcription;</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::string phoneticTranscription;</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::string definition;</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::vector</span><span style="color: #d4d4d4;"><</span><span style="color: #d4d4d4;">StrongsReference</span><span style="color: #d4d4d4;">></span><span style="color: #d4d4d4;"> references;</span></div>
<div><span style="color: #569cd6;">private:</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">void</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">parseFromRawEntry</span><span style="color: #d4d4d4;">(</span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::</span><span style="color: #4ec9b0;">string</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">rawEntry</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">void</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">parseFirstLine</span><span style="color: #d4d4d4;">(</span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::</span><span style="color: #4ec9b0;">string</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">firstLine</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">void</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">eraseEmptyLines</span><span style="color: #d4d4d4;">(</span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::</span><span style="color: #4ec9b0;">vector</span><span style="color: #d4d4d4;"><</span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::</span><span style="color: #4ec9b0;">string</span><span style="color: #d4d4d4;">></span><span style="color: #569cd6;">&</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">lines</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">void</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">parseDefinitionAndReferences</span><span style="color: #d4d4d4;">(</span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::</span><span style="color: #4ec9b0;">vector</span><span style="color: #d4d4d4;"><</span><span style="color: #4ec9b0;">std</span><span style="color: #d4d4d4;">::</span><span style="color: #4ec9b0;">string</span><span style="color: #d4d4d4;">></span><span style="color: #569cd6;">&</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">lines</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;">};</span></div></div>
<p>Now I'm wondering whether something like this could actually be
useful as part of the Sword engine, since the use case of
"flexible Strong's formatting" may also be relevant for other
frontends.<br>
</p>
<p>Best regards,<br>
Tobias<br>
</p>
</body>
</html>