nimcorpora

A Nim interface for Darius Kazemi's Corpora Project.

Pure Nim score 15/100 · tests present · no docs generated

Summary

Latest Version 0.1.1
License GPL-3.0-only
CI Status Failing
Downloads 0
Last Indexed 2026-07-31 04:57

Tags

Authors

  • Jasmine

Installation

nimble install nimcorpora
choosenim install nimcorpora
git clone https://github.com/neroist/nimcorpora

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
nimcorpora - - - - - - -

Dependencies

Package Version Optional
nim >= 1.4.0 No
zippy - No
fab - No

Source

Repository https://github.com/neroist/nimcorpora
Homepage https://github.com/neroist/nimcorpora
Registry Source nimble_official

README

nimcorpora nimble

A Nim interface for Darius Kazemi's Corpora project. - Documentation

Inspired by pycorpora.

Installation

Install via:

nimble install nimcorpora

You can also install by github and git link like so:

nimble install https://github.com/neroist/nimcorpora

or

nimble install https://github.com/neroist/nimcorpora.git

After installation, Corpora's data will be installed to the packages's directory. If this fails for whatever reason, report an error and install and put the data in the data/ directory in the package directory.

Documentation

See https://neroist.github.io/nimcorpora/nimcorpora.html

Example/Showcase

import std/json

import nimcorpora

# Get corpora object (needed to access data)
let corpora = newCorpora()

# Get all categories (aka directories in the data)
echo corpora.getCategories()
echo corpora.categories # or you can do it like this

# Get all subcategories (aka the json files in the data)
echo corpora.getSubcategories()
echo corpora.subcategories # or you can do it like this aswell
echo corpora.getSubcategories("animals") # you can also get all subcategories under
                                         # a specific category (e.g. animals)
echo corpora.getSubcategories(["animals", "archetypes"]) # or you could get all subcategories under
                                                         # under MULTIPLE categories mwuahahaha >:)

# get file (subcategory) contents
#* input `path` as subcategory (e.x "animals/ant_anatomy")
#* Note that these procs return a JsonNode
echo pretty corpora.getFile("animals/ant_anatomy")
echo pretty corpora.getFile("animals", "ant_anatomy") # you can also put the category
                                               # and subcateory as different params

# you can also get multiple files at once, via category and subcategory names
for file in corpora.getFiles("animals", ["ant_anatomy", "birds_antarctica"]):
  echo pretty file

# or you could get multiple files via their paths
for file in corpora.getFiles(["animals/birds_north_america", "animals/cats"]):
  echo pretty file

# or under a specific category
for file in corpora.getFiles("archetypes"):
  echo pretty file

# or even under multiple categories
for category in corpora.getFilesByCategories(["architecture", "art"]):
  for file in category:
    echo pretty file

# Update data
# This updates the data downloaded when nimcorpora was first installed 
echo "Updating Corpora data..."
corpora.update(output = on) #* -d:ssl needed for this proc!

echo "" # spacing

# Install data
# Installs Corpora data into current directory
echo "Installing Corpora data..."
installCorporaData() #* -d:ssl needed for this proc aswell!

Additional examples available at examples/

Distribution

For distributing an application, make sure the directory containing Corpora's data is neighboring the directory of the executable

So, the preferred file structure for distributing is:

your_application/
  bin/
    your_executable
    ...

  data/
    ...

To install the data there, you can either use installCorporaData() or include the data by default in you application directory

In addition, update(), by default, updates the data in the package's directory. When compiling a release build, update() instead updates the data in the data/ directory. So, make sure to compile with -d:release when distributing so update() works correctly for distributing.

License

Nimcorpora is licensed under the BSD Zero clause license 🎉

Made with ❤️ with Nim