Basically, there is a parser, a set of objects modeling the structure
of a bibtex database, and the "phrases", which are a sort of template
system, or reverse parser, that can format bibliography data into
other forms.

I've never been really happy with this template system. In bibtex, the
equivalent is basically a handwritten imperative program…

On 18 November 2014 13:06, Offray Vladimir Luna Cárdenas
<off...@riseup.net> wrote:
> Damien,
>
> I will. For the moment I'm using citezen as is and I don't understand its
> internals. Anyway in its current state is very useful for Zotero
> bibliographic integration via BibTeX.
>
> I'll keep you posted on my experiments on Zotero integration in using Pharo
> for open/citizen/garage science & research writing.
>
> Cheers,
>
> Offray
>
> El 18/11/14 a las #4, Damien Pollet escribió:
>
>> Please nag me if you want to contribute to Citezen. I haven't touched
>> the code a long while, but I should…
>>
>> On 18 November 2014 02:50, Offray Vladimir Luna Cárdenas
>> <off...@riseup.net> wrote:
>>>
>>> Hi Sven,
>>>
>>> Sorry for my late response. The constructive comments on the list and
>>> yours
>>> in particular are very valuable to my. I was finishing some details, so
>>> only
>>> until now I have the time to implement your suggestions. The new code for
>>> custom keys on bibtex files from pharo is published at [1] (by the grace
>>> of
>>> Doru's easy publishing of playgrounds on your stfx server)
>>>
>>> [1] http://ws.stfx.eu/3CEKQQQ3NL2E
>>>
>>> By the way the article I'm writing is about a tool for open, citizen,
>>> garage
>>> research and science developed in Pharo. It is published at [2] and was
>>> stored nicely using STON[3] and is superb. To test the tool, the article
>>> was
>>> wrote on it.
>>>
>>> [2]
>>>
>>> http://mutabit.com/deltas/repos.fossil/grafoscopio/doc/tip/Docs/Es/Articulos/Libertadores/bootstrapping-objeto-investigacion.pdf
>>>
>>> [3]
>>>
>>> http://mutabit.com/deltas/repos.fossil/grafoscopio/doc/tip/Docs/Es/Articulos/Libertadores/bootstrapping-objeto-investigacion.ston
>>>
>>> [4]
>>>
>>> http://mutabit.com/deltas/repos.fossil/grafoscopio/doc/tip/Docs/Es/Articulos/Libertadores/bootstrapping-objeto-investigacion.markdown
>>>
>>> The only thing I would add to STON would be an option to support line
>>> breaks
>>> so long character sequences can be broken to make the format DVCS
>>> friendly
>>> (git, fossil, etc) and support collaboration and changes tracking. At
>>> this
>>> moment, because of the long lines in STON, the files are treated as
>>> binaries
>>> by fossil :-/.
>>>
>>> Thanks for STON and your lessons,
>>>
>>> Offray
>>>
>>> El 22/10/14 a las #4, Sven Van Caekenberghe escribió:
>>>
>>>>
>>>>> On 22 Oct 2014, at 18:42, Offray Vladimir Luna Cárdenas
>>>>> <off...@riseup.net> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> Thanks again. I have a small script, using Citezen which does the
>>>>> trick.
>>>>> I can explore and modify the BibTeX File from the playground with this:
>>>>>
>>>>> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
>>>>> | bibFile bibliography bibStream bibOutputer |
>>>>> bibFile := ((FileLocator documents / 'U/Libertadores/Grafoscopio')
>>>>> children
>>>>>          detect: [:each | each basename endsWith: 'bib' ]).
>>>>> bibliography := CZBibParser parse: bibFile contents.
>>>>> bibStream := '' writeStream.
>>>>> 1 to: (bibliography size) do: [:index |
>>>>>     (((bibliography entries at: index) fields at: 2) key =
>>>>> 'shorttitle')
>>>>>         ifTrue: [
>>>>>           (bibliography entries at: index)
>>>>>              key: ((bibliography entries at: index) fields at: 2)
>>>>> value].
>>>>>         bibOutputer := CZBibtexOutputer new.
>>>>>         bibStream nextPutAll:
>>>>>            (bibOutputer entryToBibtexString:
>>>>>                  (bibliography entries at: index)); cr.].
>>>>> bibliography.
>>>>> bibFile writeStreamDo: [:stream |
>>>>>             stream nextPutAll: bibStream contents withUnixLineEndings
>>>>> ].
>>>>> bibStream contents.
>>>>> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
>>>>
>>>>
>>>>
>>>> Some constructive comments about your code (smaller is always better,
>>>> especially for interactive snippets):
>>>>
>>>> - you can change the #detect: to [ :each | each extension = #bib ]
>>>> - you can iterate directly over the entries with #do: as in bibliography
>>>> entries do: [ :each | .. ] which saves you the #at: index
>>>> - there are handy unary shortcuts for accessing elements, like #first,
>>>> #second and so on (up to #ninth) which also save you parenthesis
>>>> - you can also construct strings using the idiom String streamContents:
>>>> [
>>>> :bibStream | .. ]
>>>>
>>>> Sorry, these jumped to me when I saw your code, I hope you don't mind
>>>> ;-)
>>>>
>>>>> I will put some functionality inspired by this on my prototype this
>>>>> weekend.
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Offray
>>>>>
>>>>> On 10/21/2014 01:20 AM, stepharo wrote:
>>>>>>
>>>>>>
>>>>>> Check in the tools there is a bib writer.
>>>>>>
>>>>>> Stef
>>>>>>
>>>>>> On 21/10/14 03:33, Offray Vladimir Luna Cárdenas wrote:
>>>>>>>
>>>>>>>
>>>>>>> Thanks Stef and Damien,
>>>>>>>
>>>>>>> I have this small script as a proof of concept:
>>>>>>>
>>>>>>> ===================================
>>>>>>> | bibFile bibliography |
>>>>>>> bibFile := ((FileLocator documents / 'U/Libertadores/Grafoscopio')
>>>>>>> children
>>>>>>>      detect: [:each | each basename endsWith: 'bib' ]) contents.
>>>>>>> bibliography := CZBibParser parse: bibFile.
>>>>>>> 1 to: (bibliography size) do: [:index |
>>>>>>> (((bibliography entries at: index) fields at: 2) key = 'shorttitle')
>>>>>>>      ifTrue: [
>>>>>>>          (bibliography entries at: index)
>>>>>>>              key: ((bibliography entries at: index) fields at: 2)
>>>>>>> value
>>>>>>> ]].
>>>>>>> bibliography.
>>>>>>> ===================================
>>>>>>>
>>>>>>> Now I want to write back the corrected file to the .bib ... just
>>>>>>> having problems finding which message does the job. I'll keep
>>>>>>> searching.
>>>>>>>
>>>>>>> Cheers,
>>>>>>>
>>>>>>> Offray
>>>>>>>
>>>>>>> On 10/16/2014 06:40 AM, Damien Cassou wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> from Damien Pollet:
>>>>>>>>
>>>>>>>> You will need to load the .bib file from zotero (read the file
>>>>>>>> however
>>>>>>>> you like, then pass the stream to the CZ parser). You'll get a
>>>>>>>> CZBibSet (I don't recall the name exactly) which represents the
>>>>>>>> contents of the file. A Set is composed of entries, each of which
>>>>>>>> has
>>>>>>>> a key and a set of fields. Finally, fields accept a few different
>>>>>>>> kinds of values.
>>>>>>>>
>>>>>>>> Your processing is just iterating a set then setting the key of each
>>>>>>>> entry (or possibly removing and re-adding the entry, I don't recall
>>>>>>>> if
>>>>>>>> it's implemented like a dictionary or more like a list).
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Oct 13, 2014 at 2:57 AM, Offray Vladimir Luna Cárdenas
>>>>>>>> <off...@riseup.net <mailto:off...@riseup.net>> wrote:
>>>>>>>>
>>>>>>>>       Hi,
>>>>>>>>
>>>>>>>>       I'm using a Zotero collection for keeping track of several
>>>>>>>> references I have
>>>>>>>>       found for my article about the experience of the
>>>>>>>> outline/tree-like metaphor
>>>>>>>>       for writing inside Pharo (as soon as I have a presentable
>>>>>>>> working draft I
>>>>>>>>       hope to share it with you).
>>>>>>>>
>>>>>>>>       Now I want to make a post-processing of the bibtex file
>>>>>>>> exported
>>>>>>>> from
>>>>>>>>       Zotero. The idea is to use "shorttitle" field instead to
>>>>>>>> replace
>>>>>>>> the Zotero
>>>>>>>>       auto-generated one and have custom keys. So for example
>>>>>>>> instead
>>>>>>>> of:
>>>>>>>>
>>>>>>>>       =======
>>>>>>>>       @misc{_holistic_????,
>>>>>>>>                title = {Holistic software assessment (Uni Zurich -
>>>>>>>> 2011) on Vimeo},
>>>>>>>>                shorttitle = {Girba-holistic-2011},
>>>>>>>>                url = {http://vimeo.com/42073344?__from=outro-local
>>>>>>>>       <http://vimeo.com/42073344?from=outro-local>},
>>>>>>>>                urldate = {2014-08-19},
>>>>>>>>                note = {00000}
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       =======
>>>>>>>>
>>>>>>>>
>>>>>>>>       I would like to have:
>>>>>>>>
>>>>>>>>
>>>>>>>>       =======
>>>>>>>>
>>>>>>>>       @misc{Girba-holistic-2011,
>>>>>>>>                title = {Holistic software assessment (Uni Zurich -
>>>>>>>> 2011) on Vimeo},
>>>>>>>>                shorttitle = {Girba-holistic-2011},
>>>>>>>>                url = {http://vimeo.com/42073344?__from=outro-local
>>>>>>>>       <http://vimeo.com/42073344?from=outro-local>},
>>>>>>>>                urldate = {2014-08-19},
>>>>>>>>                note = {00000}
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       =======
>>>>>>>>
>>>>>>>>
>>>>>>>>       I have already installed Citizen and open it on the browser to
>>>>>>>> see the code,
>>>>>>>>       but I can find any place to start with examples.
>>>>>>>>
>>>>>>>>       Any advice on how to solve this issue will be appreciated.
>>>>>>>>
>>>>>>>>       Cheers,
>>>>>>>>
>>>>>>>>       Offray
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Damien Cassou
>>>>>>>> http://damiencassou.seasidehosting.st
>>>>>>>>
>>>>>>>> "Success is the ability to go from one failure to another without
>>>>>>>> losing
>>>>>>>> enthusiasm."
>>>>>>>> Winston Churchill
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>

Reply via email to