* Tk::ObjScanner :PROPERTIES: :CUSTOM_ID: tkobjscanner :END: ** What is Tk::ObjScanner Tk::ObjScanner is a Perl/Tk module that provides a GUI to scan any perl data including the attributes of an object. This module also provides =data-viewer=, a standalone script that opens a =Tk::ObjScanner= widget on a JSON or YAML file. For instance, this command =data-viewer /usr/share/nodejs/tar/package.json= creates the following widget: [[file:data-viewer.png]] ** In more details The scanner is a composite widget made of a HList. This widget acts as a scanner to the object (or hash ref) passed with the 'caller' parameter. The scanner will retrieve all keys of the hash/object and insert them in the HList. When the user double clicks on a key, the corresponding value will be added in the HList. If the user use the middle button to open a tied item, the internals of the tied object will be displayed. If the value is a scalar, the scalar will be displayed in a popup text window. If the value is a code ref, the deparsed code will be displayed in a popup text window. This widget can be used as a regular widget in a Tk application or can be used as an autonomous popup widget that will display the content of a data structure. The latter is like a call to a graphical =Data::Dumper=. The scanner recognizes: - tied hashes arrays or scalars - weak reference (See weaken function of =Scalar::Util= for details) This module was tested with perl5.8.2 and Tk 804.025 (beta). But should work with older versions of perl (> 5.6.1) or Tk. On the other hand, =data-viewer= requires Perl 5.16. See the embedded documentation in the module for more details. *Note* that test program (in the 't' directory) can be run interactively this way : #+begin_example perl t/xxx.t 1 #+end_example *** Installation :PROPERTIES: :CUSTOM_ID: installation :END: #+begin_example gunzip -c .tar.gz | tar xvf - cd perl Makefile.PL make test make install #+end_example From github, this module is built with *Dist::Zilla*. You must make sure that the following modules are installed: #+begin_example Dist::Zilla::Plugin::MetaResources Dist::Zilla::Plugin::Prepender Dist::Zilla::Plugin::Prereqs Dist::Zilla::PluginBundle::Filter #+end_example On debian or ubuntu, do: #+begin_example sudo aptitude install \ libdist-zilla-plugin-prepender-perl \ libdist-zilla-plugins-cjm-perl \ libdist-zilla-perl #+end_example Then run: #+begin_example dzil build #+end_example or #+begin_example dzil test dzil build #+end_example -------------- Comments and suggestions are always welcome. ** Contributors :PROPERTIES: :CUSTOM_ID: contributors :END: Many thanks to *Achim Bohnet* for all the tests, patches (and reports) he made. Many improvements were made thanks to his efforts. Thanks to *Rudi Farkas* for the 'watch' patch. Thanks to *heytitle* for the documentation fixes Thanks to *E. Choroba* for the retro compatibility patch