- ✅ Ticket 1.1: Estructura Clean Architecture en backend - ✅ Ticket 1.2: Schemas Zod compartidos - ✅ Ticket 1.3: Refactorización drugs.ts (1362 → 8 archivos modulares) - ✅ Ticket 1.4: Refactorización procedures.ts (3583 → 6 archivos modulares) - ✅ Ticket 1.5: Eliminación de duplicidades (~50 líneas) Cambios principales: - Creada estructura Clean Architecture en backend/src/ - Schemas Zod compartidos en backend/src/shared/schemas/ - Refactorización modular de drugs y procedures - Utilidades genéricas en src/utils/ (filter, validation) - Eliminados scripts obsoletos y documentación antigua - Corregidos errores: QueryClient, import test-error-handling - Build verificado y funcionando correctamente
126 lines
3.3 KiB
Markdown
126 lines
3.3 KiB
Markdown
|
||
[Build]: http://img.shields.io/travis/litejs/natural-compare-lite.png
|
||
[Coverage]: http://img.shields.io/coveralls/litejs/natural-compare-lite.png
|
||
[1]: https://travis-ci.org/litejs/natural-compare-lite
|
||
[2]: https://coveralls.io/r/litejs/natural-compare-lite
|
||
[npm package]: https://npmjs.org/package/natural-compare-lite
|
||
[GitHub repo]: https://github.com/litejs/natural-compare-lite
|
||
|
||
|
||
|
||
@version 1.4.0
|
||
@date 2015-10-26
|
||
@stability 3 - Stable
|
||
|
||
|
||
Natural Compare – [![Build][]][1] [![Coverage][]][2]
|
||
===============
|
||
|
||
Compare strings containing a mix of letters and numbers
|
||
in the way a human being would in sort order.
|
||
This is described as a "natural ordering".
|
||
|
||
```text
|
||
Standard sorting: Natural order sorting:
|
||
img1.png img1.png
|
||
img10.png img2.png
|
||
img12.png img10.png
|
||
img2.png img12.png
|
||
```
|
||
|
||
String.naturalCompare returns a number indicating
|
||
whether a reference string comes before or after or is the same
|
||
as the given string in sort order.
|
||
Use it with builtin sort() function.
|
||
|
||
|
||
|
||
### Installation
|
||
|
||
- In browser
|
||
|
||
```html
|
||
<script src=min.natural-compare.js></script>
|
||
```
|
||
|
||
- In node.js: `npm install natural-compare-lite`
|
||
|
||
```javascript
|
||
require("natural-compare-lite")
|
||
```
|
||
|
||
### Usage
|
||
|
||
```javascript
|
||
// Simple case sensitive example
|
||
var a = ["z1.doc", "z10.doc", "z17.doc", "z2.doc", "z23.doc", "z3.doc"];
|
||
a.sort(String.naturalCompare);
|
||
// ["z1.doc", "z2.doc", "z3.doc", "z10.doc", "z17.doc", "z23.doc"]
|
||
|
||
// Use wrapper function for case insensitivity
|
||
a.sort(function(a, b){
|
||
return String.naturalCompare(a.toLowerCase(), b.toLowerCase());
|
||
})
|
||
|
||
// In most cases we want to sort an array of objects
|
||
var a = [ {"street":"350 5th Ave", "room":"A-1021"}
|
||
, {"street":"350 5th Ave", "room":"A-21046-b"} ];
|
||
|
||
// sort by street, then by room
|
||
a.sort(function(a, b){
|
||
return String.naturalCompare(a.street, b.street) || String.naturalCompare(a.room, b.room);
|
||
})
|
||
|
||
// When text transformation is needed (eg toLowerCase()),
|
||
// it is best for performance to keep
|
||
// transformed key in that object.
|
||
// There are no need to do text transformation
|
||
// on each comparision when sorting.
|
||
var a = [ {"make":"Audi", "model":"A6"}
|
||
, {"make":"Kia", "model":"Rio"} ];
|
||
|
||
// sort by make, then by model
|
||
a.map(function(car){
|
||
car.sort_key = (car.make + " " + car.model).toLowerCase();
|
||
})
|
||
a.sort(function(a, b){
|
||
return String.naturalCompare(a.sort_key, b.sort_key);
|
||
})
|
||
```
|
||
|
||
- Works well with dates in ISO format eg "Rev 2012-07-26.doc".
|
||
|
||
|
||
### Custom alphabet
|
||
|
||
It is possible to configure a custom alphabet
|
||
to achieve a desired order.
|
||
|
||
```javascript
|
||
// Estonian alphabet
|
||
String.alphabet = "ABDEFGHIJKLMNOPRSŠZŽTUVÕÄÖÜXYabdefghijklmnoprsšzžtuvõäöüxy"
|
||
["t", "z", "x", "õ"].sort(String.naturalCompare)
|
||
// ["z", "t", "õ", "x"]
|
||
|
||
// Russian alphabet
|
||
String.alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя"
|
||
["Ё", "А", "Б"].sort(String.naturalCompare)
|
||
// ["А", "Б", "Ё"]
|
||
```
|
||
|
||
|
||
External links
|
||
--------------
|
||
|
||
- [GitHub repo][https://github.com/litejs/natural-compare-lite]
|
||
- [jsperf test](http://jsperf.com/natural-sort-2/12)
|
||
|
||
|
||
Licence
|
||
-------
|
||
|
||
Copyright (c) 2012-2015 Lauri Rooden <lauri@rooden.ee>
|
||
[The MIT License](http://lauri.rooden.ee/mit-license.txt)
|
||
|
||
|