Merge remote-tracking branch 'akullpp/master'
This commit is contained in:
@ -1,50 +0,0 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
The approach taken is explained below. I decided to do it simply.
|
||||
Initially I was considering parsing the data into some sort of
|
||||
structure and then generating an appropriate README. I am still
|
||||
considering doing it - but for now this should work. The only issue
|
||||
I see is that it only sorts the entries at the lowest level, and that
|
||||
the order of the top-level contents do not match the order of the actual
|
||||
entries.
|
||||
|
||||
This could be extended by having nested blocks, sorting them recursively
|
||||
and flattening the end structure into a list of lines. Revision 2 maybe ^.^.
|
||||
"""
|
||||
|
||||
|
||||
def main():
|
||||
# First, we load the current README into memory as an array of lines
|
||||
with open('README.md', 'r') as read_me_file:
|
||||
read_me = read_me_file.readlines()
|
||||
|
||||
# Then we cluster the lines together as blocks
|
||||
# Each block represents a collection of lines that should be sorted
|
||||
# This was done by assuming only links ([...](...)) are meant to be sorted
|
||||
# Clustering is done by indentation
|
||||
blocks = []
|
||||
last_indent = None
|
||||
for line in read_me:
|
||||
s_line = line.lstrip()
|
||||
indent = len(line) - len(s_line)
|
||||
|
||||
if any([s_line.startswith(s) for s in ['* [', '- [']]):
|
||||
if indent == last_indent:
|
||||
blocks[-1].append(line)
|
||||
else:
|
||||
blocks.append([line])
|
||||
last_indent = indent
|
||||
else:
|
||||
blocks.append([line])
|
||||
last_indent = None
|
||||
|
||||
with open('README.md', 'w+') as sorted_file:
|
||||
# Then all of the blocks are sorted individually
|
||||
blocks = [''.join(sorted(block, key=lambda s: s.lower())) for block in blocks]
|
||||
# And the result is written back to README.md
|
||||
sorted_file.write(''.join(blocks))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
22
README.md
22
README.md
@ -4,6 +4,7 @@ A curated list of awesome Java frameworks, libraries and software.
|
||||
|
||||
- [Awesome Java](#awesome-java)
|
||||
- [Ancients](#ancients)
|
||||
- [Bean Mapping](#bean-mapping)
|
||||
- [Build](#build)
|
||||
- [Bytecode Manipulation](#bytecode-manipulation)
|
||||
- [Cluster Management](#cluster-management)
|
||||
@ -73,6 +74,15 @@ A curated list of awesome Java frameworks, libraries and software.
|
||||
* [JavaServer Faces](https://javaserverfaces.java.net/) - Oracle's open-source implementation of the JSF standard, Mojarra.
|
||||
* [JavaServer Pages](https://jsp.java.net/) - Common templating for websites with custom tag libraries.
|
||||
|
||||
## Bean Mapping
|
||||
|
||||
*Frameworks that ease bean mapping.*
|
||||
|
||||
* [Dozer](https://github.com/DozerMapper/dozer/) - Mapper that copies data from one object to another, using annotations, API or XML configuration.
|
||||
* [MapStruct](https://github.com/mapstruct/mapstruct) - Code generator which simplifies mappings between different bean types, based on a convention over configuration approach.
|
||||
* [ModelMapper](https://github.com/jhalterman/modelmapper) - ModelMapper is an intelligent object mapping library that automatically maps objects to each other.
|
||||
* [Orika](https://github.com/orika-mapper) - Orika is a Java Bean mapping framework that recursively copies (among other capabilities) data from one object to another.
|
||||
* [Selma](https://github.com/xebia-france/selma) - Stupid Simple Statically Linked Mapper. Selma is an Annotation Processor Based bean mapper.
|
||||
|
||||
## Build
|
||||
|
||||
@ -148,6 +158,7 @@ A curated list of awesome Java frameworks, libraries and software.
|
||||
|
||||
*Frameworks and libraries that simplify reading/writing CSV data.*
|
||||
|
||||
* [opencsv](http://opencsv.sourceforge.net) - Simple CSV parser with a commercial-friendly license.
|
||||
* [uniVocity-parsers](https://github.com/uniVocity/univocity-parsers) - One of the fastest and most feature-complete CSV. Also comes with parsers for TSV and fixed width records.
|
||||
|
||||
## Database
|
||||
@ -160,11 +171,13 @@ A curated list of awesome Java frameworks, libraries and software.
|
||||
* [H2](http://h2database.com/) - Small SQL Database notable for its in-memory functionality.
|
||||
* [HikariCP](https://github.com/brettwooldridge/HikariCP) - High performance JDBC connection pool.
|
||||
* [JDBI](http://jdbi.org/) - Convenient abstraction of JDBC.
|
||||
* [Jedis](https://github.com/xetorthio/jedis) - A small client for interaction with redis, with methods for commands.
|
||||
* [jOOQ](http://www.jooq.org/) - Generates typesafe code based on SQL schema.
|
||||
* [Liquibase](http://www.liquibase.org/) - Database-independent library for tracking, managing and applying database schema changes.
|
||||
* [MapDB](http://www.mapdb.org/) - Embedded database engine that provides concurrent collections backed on disk or in off-heap memory.
|
||||
* [Presto](https://github.com/facebook/presto) - Distributed SQL query engine for big data.
|
||||
* [Querydsl](http://www.querydsl.com/) - Typesafe unified queries.
|
||||
* [Redisson](https://github.com/mrniko/redisson) - Allows for distributed and scalable data structures on top of a Redis server.
|
||||
|
||||
## Data structures
|
||||
|
||||
@ -174,12 +187,15 @@ A curated list of awesome Java frameworks, libraries and software.
|
||||
* [Protobuf](https://github.com/google/protobuf) - Google's data interchange format.
|
||||
* [SBE](https://github.com/real-logic/simple-binary-encoding) - Simple Binary Encoding, one of the fastest message formats around.
|
||||
* [Wire](https://github.com/square/wire) - Clean, lightweight protocol buffers.
|
||||
* [Apache Thrift](https://thrift.apache.org/) - Data interchange format that originated at Facebook.
|
||||
* [Apache Avro](https://avro.apache.org/) - Data interchange format featuring among others: dynamic typing, untagged data, absence of manually assigned IDs.
|
||||
|
||||
## Date and Time
|
||||
|
||||
*Libraries related to handling date and time.*
|
||||
|
||||
* [Joda-Time](http://www.joda.org/joda-time/) - De facto standard date/time-library before Java 8.
|
||||
* [ThreeTenBP](https://github.com/ThreeTen/threetenbp) - Port of JSR 310 (java.time package) by the author of Joda-Time.
|
||||
* [Time4J](https://github.com/MenoData/Time4J) - Advanced date and time library.
|
||||
|
||||
## Dependency Injection
|
||||
@ -228,6 +244,7 @@ A curated list of awesome Java frameworks, libraries and software.
|
||||
* [Apache HBase](http://hbase.apache.org) - Hadoop database for big data.
|
||||
* [Druid](http://druid.io) - Real-time and historical OLAP data store that excel at aggregation and approximation queries.
|
||||
* [Infinispan](http://infinispan.org/) - Highly concurrent key/value datastore used for caching.
|
||||
* [OpenTSDB](http://opentsdb.net) - Scalable and distributed time series database written on top of Apache HBase.
|
||||
|
||||
## Distribution
|
||||
|
||||
@ -273,6 +290,7 @@ A curated list of awesome Java frameworks, libraries and software.
|
||||
* [Functional Java](http://www.functionaljava.org) - Implements numerous basic and advanced programming abstractions that assist composition-oriented development.
|
||||
* [Javaslang](http://javaslang.com) - Functional component library that provides persistent data types and functional control structures.
|
||||
* [jOOλ](https://github.com/jOOQ/jOOL) - Extension to Java 8 which aims to fix gaps in lambda, providing numerous missing types and a rich set of sequential Stream API additions.
|
||||
* [derive4j](https://github.com/derive4j/derive4j) - Java 8 annotation processor and framework for deriving algebraic data types constructors, pattern-matching, morphisms.
|
||||
|
||||
## Game Development
|
||||
|
||||
@ -400,6 +418,7 @@ A curated list of awesome Java frameworks, libraries and software.
|
||||
|
||||
* [AppDynamics](http://www.appdynamics.com/) - Commercial performance monitor.
|
||||
* [JavaMelody](https://github.com/javamelody/javamelody) - Performance monitoring and profiling.
|
||||
* [jmxtrans](https://github.com/jmxtrans/jmxtrans/) - Tool to connect to multiple JVMs and to query them for their attributes via JMX. Its query language is based on JSON, which allows non-Java programmers to access the JVMs attributes. Likewise, this tool supports different output writes, including Graphite, Ganglia, StatsD, among others.
|
||||
* [Kamon](http://www.kamon.io/) - Tool for monitoring applications running on the JVM.
|
||||
* [New Relic](http://newrelic.com/) - Commercial performance monitor.
|
||||
* [SPM](http://sematext.com/spm/) - Commercial performance monitor with distributing transaction tracing for JVM apps.
|
||||
@ -505,6 +524,7 @@ A curated list of awesome Java frameworks, libraries and software.
|
||||
* [Apache Shiro](http://shiro.apache.org/) - Performs authentication, authorization, cryptography and session management.
|
||||
* [Bouncy Castle](https://www.bouncycastle.org/java.html) - All-purpose cryptographic library. JCA provider, wide range of functions from basic helpers to PGP/SMIME operations.
|
||||
* [Cryptomator](http://cryptomator.org/) - Multiplatform transparent client-side encryption of files in the cloud.
|
||||
* [Google Keyczar](https://github.com/google/keyczar) - Easy to use, yet safe encryption framework with key versioning.
|
||||
* [Keycloak](http://keycloak.jboss.org/) - Integrated SSO and IDM for browser apps and RESTful web services.
|
||||
* [PicketLink](http://picketlink.org/) - Umbrella project for security and identity management.
|
||||
|
||||
@ -561,6 +581,8 @@ A curated list of awesome Java frameworks, libraries and software.
|
||||
* [Truth](https://github.com/google/truth) - Google's assertion and proposition framework.
|
||||
* [Unitils](http://www.unitils.org/) - Modular testing library for unit and integration testing.
|
||||
* [WireMock](http://wiremock.org/) - Stubbs and mocks web services.
|
||||
* [Moco](https://github.com/dreamhead/moco) - Concise web services for stubs and mocks, Duke's Choice Award 2013.
|
||||
* [GreenMail](http://www.icegreen.com/greenmail/) - In-memory email server for integration testing. Supports SMTP, POP3 and IMAP including SSL.
|
||||
|
||||
## Utility
|
||||
|
||||
|
Reference in New Issue
Block a user